WPF如何设置上下文菜单的背景颜色,使其覆盖网格的背景颜色

时间:2014-06-23 19:33:24

标签: wpf

我的样式设置如下:

<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上。我不明白为什么,但上下文菜单的背景总是用粉红色概述的Darkgray。让Context菜单正确显示的唯一方法是禁用网格样式。我已经尝试了我能想到的一切,包括为ContextMenu创建一个ControlTemplate。

为什么网格背景颜色会影响菜单背景颜色以及我是如何让它完全消除它?

1 个答案:

答案 0 :(得分:0)

<Style TargetType="Grid" >

您正在为应用程序中的所有 Grid控件定义样式(如果您已在App.xaml中定义了样式)或窗口(如果您已在Window&中定义了样式) #39; s资源)。或者,如果您使用<Grid.Style>定义了此样式,那么它将应用于样式Grid下方可视树中的所有Grid

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

为了避免这种情况,最好使用

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

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