【问题标题】:WPF How do you set the Background color of a context menu so that it overrides the background color of a gridWPF 如何设置上下文菜单的背景颜色,使其覆盖网格的背景颜色
【发布时间】:2014-06-23 19:33:23
【问题描述】:

我的样式设置如下:

<Style TargetType="Grid" >
        <Setter Property="Control.Background">
            <Setter.Value>
                <SolidColorBrush>
                    <SolidColorBrush.Color>
                        <Color A="255" R="51" G="50" B="51"/>
                    </SolidColorBrush.Color>
                </SolidColorBrush>
            </Setter.Value>
        </Setter> 
    </Style>

然后我为上下文菜单设置了一个样式,如下所示:

    <Style x:Key="contextMenuItem" TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}" >  
        <Setter Property="Background" Value="Pink" /> 
    </Style>

上下文菜单出现在嵌套在网格中的 StackPanel 上。我不明白为什么,但上下文菜单的背景总是用粉色勾勒出的深灰色。使上下文菜单正确显示的唯一方法是禁用网格的样式。我已经尝试了所有我能想到的方法,包括为 ContextMenu 创建一个 ControlTemplate。

为什么网格背景颜色会影响菜单背景颜色,我到底该如何让它消失?

【问题讨论】:

    标签: wpf


    【解决方案1】:

    <Style TargetType="Grid" >
    

    您正在为应用程序(如果您已在 App.xaml 中定义样式)或窗口(如果您已在窗口资源中定义样式)中的 all Grid 控件定义样式.或者,如果您使用&lt;Grid.Style&gt; 定义了此样式,那么它将应用于样式树下的所有Grids Grid

    由于默认的MenuItem 控件模板还包含一个Grid 控件,因此它的样式也将与您的所有其他Grids 完全相同。

    为了避免这种情况,你应该更好地使用

    <Style x:Key="myGridStyle" TargetType="Grid" >
    

    并使用Style="{StaticResource myGridStyle}" 表示您想要使用此特定颜色设置样式的Grids。

    【讨论】:

    • 您先生是一位学者,一位绅士。我没有意识到默认情况下它会在上下文菜单中呈现一个网格,我也没有意识到这种风格的推动力有多远。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    相关资源
    最近更新 更多