我的样式设置如下:
<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。
为什么网格背景颜色会影响菜单背景颜色以及我是如何让它完全消除它?
答案 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
。