【问题标题】:WPF MenuItem Color when set to black wont change to grey when disabled设置为黑色时的 WPF 菜单项颜色在禁用时不会变为灰色
【发布时间】:2010-04-23 18:47:45
【问题描述】:

当顶部菜单项的前景设置为黑色而背景设置为白色时,XP 和 Windows 7 一切正常。但是我们使用的是黑色和白色前景的主菜单栏。这只会在 Windows 7 中引起问题。为什么菜单项前景设置为黑色时,禁用时它不会变为灰色。

【问题讨论】:

    标签: wpf


    【解决方案1】:

    我在使用 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>
    

    【讨论】:

    • 顺便说一下,与其让触发器将 Foreground 属性设置为 Gray,不如将 Opacity 属性设置为 50。
    • 我不知道这是否只是版本的不同,但Opacity 是双重的;启用时应设置为 1.0,禁用时应设置为 0.5。
    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多