我想在mouseOver上更改MenuItem的默认背景颜色。这是我的xaml代码:
风格:
findstr
控制:
findstr /?
所以我有鼠标悬停触发器,如果鼠标结束,它应该将背景颜色变为黄色,但它显示默认的浅灰色,如snap中所示
有人能告诉我如何在鼠标悬停时获得背景颜色黄色吗?
答案 0 :(得分:16)
您的样式未应用,因为MenuItem的默认控件模板有一个触发器,当" IsHighlighted"是真的。 ControlTemplate的触发器始终优先于样式触发器。
将此添加到您的样式设置器:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<Border x:Name="Bd" Padding="17,0,17,0" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True" Uid="Border_38">
<ContentPresenter x:Name="ContentPresenter" Content="{TemplateBinding Header}" Grid.Column="1" ContentSource="Header" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Uid="ContentPresenter_33"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="Background" TargetName="Bd" Value="Yellow"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="#FF26A0DA"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
答案 1 :(得分:1)
我简化了示例。
在参考资料中定义:
<Style
x:Key="MenuItemStyle"
TargetType="{x:Type MenuItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="WhiteSmoke" />
<Style.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="WhiteSmoke" />
</Trigger>
</Style.Triggers>
</Style>
然后在MenuItem中使用它:
<MenuItem
Header="_File"
Style="{StaticResource MenuItemStyle}">