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