【发布时间】:2010-04-23 18:47:45
【问题描述】:
当顶部菜单项的前景设置为黑色而背景设置为白色时,XP 和 Windows 7 一切正常。但是我们使用的是黑色和白色前景的主菜单栏。这只会在 Windows 7 中引起问题。为什么菜单项前景设置为黑色时,禁用时它不会变为灰色。
【问题讨论】:
标签: wpf
当顶部菜单项的前景设置为黑色而背景设置为白色时,XP 和 Windows 7 一切正常。但是我们使用的是黑色和白色前景的主菜单栏。这只会在 Windows 7 中引起问题。为什么菜单项前景设置为黑色时,禁用时它不会变为灰色。
【问题讨论】:
标签: wpf
我在使用 Windows XP 和 7 时遇到了同样的问题。
Foreground="Black" 属性会覆盖作为 IsEnabled 函数的内置样式触发器。
要完成您正在寻找的内容,需要使用 IsEnabled 上的触发器构建您自己的样式。以下代码显示了如何以内联方式执行此操作,尽管您可能希望将样式拉入资源部分并在所有菜单项上使用它。
<MenuItem Header="My Item" IsEnabled="{Binding MyItemEnabled}">
<MenuItem.Style>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Foreground" Value="Black"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
【讨论】:
Opacity 是双重的;启用时应设置为 1.0,禁用时应设置为 0.5。