2015-07-27 5 views
2

Я хочу, чтобы повторно стиль моего ContextMenu с следующим стилемWPF Пункт меню не закрывается

<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="MenuItem"> 
    <Border x:Name="templateRoot" BorderBrush="{TemplateBinding BorderBrush}" 
      BorderThickness="{TemplateBinding BorderThickness}" 
      Background="{TemplateBinding Background}" Height="22" SnapsToDevicePixels="true"> 
     <Grid> 
      <Button> 
       <ContentPresenter 
         Name="HeaderHost" 
         ContentSource="Header" 
         RecognizesAccessKey="True"/> 
      </Button> 
     </Grid> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsHighlighted" Value="True"> 
      <Setter Property="Background" TargetName="templateRoot" Value="Transparent"/> 
      <Setter Property="BorderBrush" TargetName="templateRoot" Value="{StaticResource MenuItem.Highlight.Border}"/> 
     </Trigger> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

После я нажимаю на моем пункте контекстного меню он запускает свой обратный вызов, но само меню остается на экране , Как я могу вызвать логику закрытия?

Благодаря

ответ

2

The Button обрабатывает событие щелчка и остановить его от бурлит визуальное дерево к MenuItem.

Установка IsHitTestVisible на кнопке остановит Button обработку события щелчка, но также остановит MouseOver/Pressed стиль.

<Button IsHitTestVisible="False"> 
    <ContentPresenter 
    Name="HeaderHost" 
    ContentSource="Header" 
    RecognizesAccessKey="True"/> 
</Button> 
Смежные вопросы