【问题标题】:C# override default ContextMenu Style (WPF)C# 覆盖默认的 ContextMenu 样式 (WPF)
【发布时间】:2013-02-05 00:46:49
【问题描述】:

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

【问题讨论】:

    标签: c# wpf contextmenu


    【解决方案1】:

    确保:

    • 资源字典在您的代码中被加载而不是稍后被卸载。 (我记得加载的资源字典列表可以在Application.Current.Resources.MergedDictionaries找到)
    • 您没有在其声明中设置目标 ContextMenu 的样式或其他属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多