2

我在尝试更改 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>
4

1 回答 1

2

确保:

  • 资源字典稍后在您的代码中加载而不是卸载。(据我所知,加载的资源字典列表可以在 中找到Application.Current.Resources.MergedDictionaries
  • 您没有在其声明中设置目标 ContextMenu 的样式或其他属性。
于 2013-02-04T16:46:49.000 回答