【发布时间】:2017-08-31 18:05:46
【问题描述】:
【问题讨论】:
【问题讨论】:
修改 MenuItem (WPF) 的样式比看起来更复杂,因为同一个 MenuItem 控件使用不同的模板,具体取决于分配给每个 MenuItem 的角色:SubmenuItem em>、TopLevelHeader 和 SubmenuHeader。 使用菜单栏应该不会有任何问题:如果需要,您可以像使用任何其他控件一样定义样式和模板。对于 MenuItem,请尝试以下操作:
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type local:MyMmenuItem}">
...
</ControlTemplate>
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelHeaderTemplateKey}" TargetType="{x:Type local:MyMenuItem}">
...
</ControlTemplate>
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuHeaderTemplateKey}" TargetType="{x:Type local:MyMenuItem}">
...
</ControlTemplate>
为了在不同模板之间切换,我们将使用 RoleProperty 依赖属性,以我们的风格定义这些触发器:
<Style x:Key="MyMenuItemStyle" TargetType="{x:Type local:MyMenuItem}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Style.Triggers>
<Trigger Property="Role" Value="TopLevelHeader">
<Setter Property="Template" Value="{StaticResource {x:Static MenuItem.TopLevelHeaderTemplateKey}}"/>
</Trigger>
<Trigger Property="Role" Value="TopLevelItem">
<Setter Property="Template" Value="{StaticResource {x:Static MenuItem.TopLevelItemTemplateKey}}"/>
</Trigger>
<Trigger Property="Role" Value="SubmenuHeader">
<Setter Property="Template" Value="{StaticResource {x:Static MenuItem.SubmenuHeaderTemplateKey}}"/>
</Trigger>
<Trigger Property="Role" Value="SubmenuItem">
<Setter Property="Template" Value="{StaticResource {x:Static MenuItem.SubmenuItemTemplateKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
我希望这对你有用;当我遇到同样的问题时,它对我有用。
祝你好运,好代码。
【讨论】: