我正在使用MetroDark主题来设置我的WPF应用程序,遗憾的是它没有MenuItem。所以我想改变前景和背景四种状态的菜单项:
到目前为止,我有这样的代码,当鼠标悬停在菜单项时,它只是设置前景和背景:
<Menu Background="#FF181818" Foreground="#FFABABAB" >
<Menu.Resources>
<Style x:Key="{x:Type MenuItem}" >
<Style.Setters>
<Setter Property="MenuItem.Background" Value="#FF181818" />
<Setter Property="MenuItem.Foreground" Value="#FFABABAB" />
</Style.Setters>
<Style.Triggers>
<Trigger Property="MenuItem.IsMouseOver" Value="True">
<Setter Property="MenuItem.Background" Value="Green" />
<Setter Property="MenuItem.Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</Menu.Resources>
<MenuItem Header="File">
<MenuItem Header="New" Command="ApplicationCommands.New"></MenuItem>
<MenuItem Header="Open" Command="ApplicationCommands.Open"></MenuItem>
<MenuItem Header="Save" Command="ApplicationCommands.Save"></MenuItem>
<MenuItem Header="Save As" Command="ApplicationCommands.SaveAs"></MenuItem>
<Separator Background="#FF181818" Foreground="#FFABABAB"></Separator>
<MenuItem Header="Delete" Command="ApplicationCommands.Delete"></MenuItem>
<MenuItem Header="Quit" Click="Quit_MenuItem_Click"></MenuItem>
</MenuItem>
<MenuItem Header="Format" Click="Format_MenuItem_Click" ></MenuItem>
<MenuItem Header="About" ></MenuItem>
</Menu>
结果是: 然而,Foreground的设置适用于Background仅适用于MenuItem,它们是Menu的直接子项,而不是其子菜单项。
我注意到这个Styled MenuItem on WPF,这可能是相关的。但我的问题是,如果没有ControlTemplate,我能解决这个问题吗?我正在寻找一个可以应用于所有其他状态的解决方案,如IsDisabled和IsPressed。
非常感谢!
答案 0 :(得分:0)
您需要修改模板。在Blend中很容易做到。我建议在Blend中创建一个SimpleMenuItem并编辑该模板的副本。使用默认模板imo时,它们更容易使用。