c# - WPF MenuItem Foreground 设置为子菜单 - 只希望它出现在主菜单上

标签 c# .net wpf

我有一个 WPF 菜单,我将前景颜色设置为绑定(bind)(使用转换器),比如说我的顶级菜单的前景变为绿色,例如,它下面的所有子菜单变为绿色(我没有想要)。

代码示例: 我希望 Finishing Position 顶部菜单变为绿色或转换器告诉它做什么。 但是,我不希望子 MenuItemDeleteSelection 变为相同的颜色,我希望它只是黑色,或者当它的命令绑定(bind)为 Can Execute= false 时默认为灰色。

<Menu>
    <MenuItem Header="{Binding FinishingPosition,Converter={StaticResource FinishingPositionToDisplayTextConverter1}}"  Height="17" Width="12" Padding="0" Name="SelectionStatusHeader" Foreground="{Binding FinishingPosition,Converter={StaticResource FinishingPositionToColourConverter1}}" Background="White" HorizontalContentAlignment="Center">
        <MenuItem Name="MenuItemDeleteSelection" Header="Delete Selection"
                    Command="{Binding Path=DataContext.DeleteSelectionCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 
                    CommandParameter="{Binding}" />

最佳答案

只需在您的菜单资源中设置 MenuItem 的默认样式,这样它就会自动应用于您的所有菜单项。

将默认值设置为 SystemColors.MenuTextBrushKey,它将应用于除覆盖它的菜单项之外的所有菜单项。

<Menu>
   <Menu.Resources>
       <Style TargetType="MenuItem">
           <Setter Property="Foreground"
              Value="{StaticResource {x:Static SystemColors.MenuTextBrushKey}}"/>
       </Style>
    </Menu.Resources>
    <MenuItem Foreground="Green"/>
    <MenuItem/>
    <MenuItem/>
</Menu>

关于c# - WPF MenuItem Foreground 设置为子菜单 - 只希望它出现在主菜单上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889008/

相关文章:

c# - 如何将连续按键发送到程序?

c# - 如何在 Windows Phone 8.1 上缩放和滚动选择。帮帮我

c# - 从代码隐藏格式化 DataGridTextColumn

c# - 我应该使用哪种集合类型以获得最佳性能?

c# - 流行的 "volatile polled flag"模式坏了吗?

c# - 拉伸(stretch)四边形以适合矩形

c# - 可以在 .Net 4.0 中使用 Tuple 的实际示例?

c# - 如何在 C# 中读取 IHTMLComputedStyle 接口(interface)的 fontName 属性?

c# 初学者对类问题感到沮丧

wpf - Avalon Dock float 窗口 - ShowInTaskBar