当ContextMenu和MenuItems是透明的时,WPF MenuItem.IsHighlighted==false

当ContextMenu和MenuItems是透明的时,WPF MenuItem.IsHighlighted==false,wpf,hover,contextmenu,menuitem,transparent,Wpf,Hover,Contextmenu,Menuitem,Transparent,我试图创建一个上下文菜单,允许用户查看它下面的内容,因此我将上下文菜单及其菜单项的背景设置为透明。当用户将鼠标移动到MenuItemsPowers上时,由于iHighlighted上的ControlTemplate触发器,它们应该会显示出来。问题是,当鼠标位于菜单项的透明部分时,触发器不工作。如果我将ContextMenu或其MenuItems的背景色更改为透明以外的颜色,则触发器将工作。我原以为透明背景应该表现得像纯色,但在本例中并非如此。有没有办法让这一切顺利进行 <Window x:

我试图创建一个上下文菜单,允许用户查看它下面的内容,因此我将上下文菜单及其菜单项的背景设置为透明。当用户将鼠标移动到MenuItemsPowers上时,由于iHighlighted上的ControlTemplate触发器,它们应该会显示出来。问题是,当鼠标位于菜单项的透明部分时,触发器不工作。如果我将ContextMenu或其MenuItems的背景色更改为透明以外的颜色,则触发器将工作。我原以为透明背景应该表现得像纯色,但在本例中并非如此。有没有办法让这一切顺利进行

<Window x:Class="TransparentContextMenu.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="600" Width="800">
    <Window.Resources>

        <ControlTemplate x:Key="contextMenuItemTemplate" TargetType="{x:Type MenuItem}">
            <Grid>
               <Polygon Points="0,0 180,0 180,30 0,30" Fill="Transparent" x:Name="Background"/>
               <Polygon Points="0,0 180,0 180,30 0,30" Opacity="0" x:Name="HoverBorder" Fill="Gray"/>
               <ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsHighlighted" Value="true">
                    <Setter Property="Opacity" Value="1" TargetName="HoverBorder"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>

        <Style x:Key="contextMenuStyle" TargetType="{x:Type ContextMenu}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ContextMenu}">
                        <Border Background="Transparent">
                            <StackPanel IsItemsHost="True"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    </Window.Resources>

    <Grid Background="Transparent">
        <Grid.ContextMenu>
            <ContextMenu Style="{StaticResource contextMenuStyle}">
                <MenuItem Header="Item A" Template="{StaticResource contextMenuItemTemplate}"/>
                <MenuItem Header="Item B" Template="{StaticResource contextMenuItemTemplate}"/>
                <MenuItem Header="Item C" Template="{StaticResource contextMenuItemTemplate}"/>
                <MenuItem Header="Item D" Template="{StaticResource contextMenuItemTemplate}"/>
                <MenuItem Header="Item E" Template="{StaticResource contextMenuItemTemplate}"/>
            </ContextMenu>
        </Grid.ContextMenu>
    </Grid>

</Window>

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
}

请尝试将背景设置为“null”