使用MenuItems WPF设置按钮样式

时间:2017-08-31 18:05:46

标签: c# wpf xaml menu menuitem

我需要一种方法来提出像styled Image

这样的风格

但这是我目前使用Unstyled Image

的人

如果您可以提供有关如何完成工作的链接,代码,教程的帮助,我将非常感激。感谢..

1 个答案:

答案 0 :(得分:0)

修改MenuItem(WPF)的样式比看起来更复杂,因为相同的MenuItem控件使用不同的模板,具体取决于分配给每个MenuItem的 Role SubmenuItem 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>

我希望这适合你;当我遇到同样的问题时,它对我有用 祝你好运,好的代码。