我在尝试更改 WPF 中默认 ContextMenu 的样式时遇到问题。 我不想覆盖 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>
最佳答案
确保:
- 资源字典会在代码中加载,但稍后不会卸载。
(据我记得加载的资源字典列表可以在
Application.Current.Resources.MergedDictionaries
中找到) - 您无需在 objective-c ontextMenu 的声明中设置其 Style 或其他属性。
关于C# 覆盖默认的 ContextMenu 样式 (WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13147344/