WPF菜单项没有关闭

本文关键字:菜单项 WPF | 更新日期: 2023-09-27 18:04:58

我想用以下样式重新定义我的ContextMenu

   <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>

一旦我点击我的上下文菜单项,它触发我的回调,但菜单本身留在屏幕上。如何触发关闭逻辑?

谢谢

WPF菜单项没有关闭

Button正在处理点击事件,并阻止它从可视化树冒泡到MenuItem

在按钮上设置IsHitTestVisible会阻止Button处理点击事件,但也会阻止MouseOver/Pressed样式化。

<Button IsHitTestVisible="False">
    <ContentPresenter 
    Name="HeaderHost"
    ContentSource="Header"
    RecognizesAccessKey="True"/>
</Button>