【发布时间】:2011-01-27 00:31:23
【问题描述】:
我已经为 MenuItem 和 ContextMenu 创建了一个自定义样式和模板,对于我的第一个级别,效果很好,但是每当我添加一个 SubMenu 项时,该 ContextMenu 的样式都会恢复为默认样式。如何确保该项目使用我的自定义样式?我也尝试过使用
【问题讨论】:
标签: wpf wpf-controls
我已经为 MenuItem 和 ContextMenu 创建了一个自定义样式和模板,对于我的第一个级别,效果很好,但是每当我添加一个 SubMenu 项时,该 ContextMenu 的样式都会恢复为默认样式。如何确保该项目使用我的自定义样式?我也尝试过使用
【问题讨论】:
标签: wpf wpf-controls
问题在于样式被应用于 ContextMenu 的子菜单项。由于它们本身就是 ItemsControl,因此孙辈正在从 MenuItem 样式中选择 ItemContainerStyle。我建议将 MenuItem 样式拉到一个单独的资源中,然后像这样使用它:
<Style x:Key="menuItemStyle" TargetType="{x:Type MenuItem}">
...
</Style>
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource menuItemStyle}">
<Setter Property="ItemContainerStyle" Value="{StaticResource menuItemStyle}" />
</Style>
</Setter.Value>
</Setter>
</Style>
【讨论】: