C#覆盖默认的ContextMenu样式(WPF)

时间:2012-10-30 20:47:26

标签: c# wpf contextmenu

我在尝试更改WPF中默认ContextMenu的样式时遇到问题。 我不想覆盖de ContextMenu,我简单地想要覆盖ContextMenu STYLE。 在所有网站中,我说必须创建ContextMenu的每个MenuItem,但我想使用默认的MenuItems,并且只改变样式并在后台添加边框。 我该怎么办?

<Style TargetType="{x:Type ContextMenu}">
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="Grid.IsSharedSizeScope" Value="true" />
    <Setter Property="HasDropShadow" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContextMenu}">
                <Border x:Name="Border" Background="#000" BorderThickness="1">
                    <ScrollViewer x:Name="ScrollViewer">
                        <ItemsPresenter />
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 个答案:

答案 0 :(得分:2)

确保:

  • 资源字典已加载,稍后未在代码中卸载。 (据我所知,加载的资源字典列表可以在Application.Current.Resources.MergedDictionaries
  • 中找到
  • 您不在其声明中设置目标ContextMenu的Style或其他属性。