我有一个包含三个项目的菜单,当鼠标悬停在任何项目上时,我正在尝试更改背景颜色。我试过IsMouseOver& IsHighlighted触发属性并且都不起作用。
在我的App.xaml中:
<Style TargetType="MenuItem" x:Key="MenuItemStyle" >
<Style.Triggers>
<Trigger Property="MenuItem.IsHighlighted" Value="true">
<Setter Property="Background" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
在我的Main.xaml中:
<Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="975
" FontFamily="Tempus Sans ITC" FontSize="16" >
<Menu.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFC8C8C8" Offset="0"/>
<GradientStop Color="Black" Offset="1"/>
</LinearGradientBrush>
</Menu.Background>
<Menu.Foreground>
<SolidColorBrush Color="#FFFFFFFB"/>
</Menu.Foreground>
<MenuItem Header="New" Click="MenuNew_Click" VerticalAlignment="Center" Padding="15,4,8,3" Width="60">
<MenuItem.ToolTip>
<ToolTip>
Add new Park
</ToolTip>
</MenuItem.ToolTip>
</MenuItem>
<MenuItem Header="Search" Width="65" Padding="12,4,8,3" >
<MenuItem.ToolTip>
<ToolTip> Select search option</ToolTip>
</MenuItem.ToolTip>
<MenuItem Header="Name" Background="Black" FontSize="14" Style="{StaticResource MenuItemStyle}" />
<MenuItem Header="ID" Background="Black" FontSize="14"/>
<MenuItem Header="OwnerName" Background="Black" FontSize="14"/>
</MenuItem>
</Menu>
答案 0 :(得分:1)
ControlTemplate
的默认MenuItem
(由Show Me The Template提取)未在鼠标悬停时设置MenuItem.Background
属性,它会直接在模板中设置元素。不幸的是,这意味着您无法仅更改突出显示颜色,但您必须重新创建整个ControlTemplate
。 MSDN有一个如何执行此操作的示例(这个来自.NET 3.5,但应该适用于4.0或4.5)。
您的代码中另一个警告:由于您直接在Background
上设置MenuItem
,因此Style
的{{1}}无论如何都无效。由于DependencyProperty
value precedence,您在商品上设置的本地值无法被Trigger
Style
覆盖。