【问题标题】:Styling a Button with MenuItems WPF使用 MenuItems WPF 设置按钮样式
【发布时间】:2017-08-31 18:05:46
【问题描述】:

请我需要一种方法来想出像这样的风格

但这是我目前使用的

如果您能提供有关如何完成它的链接、代码、教程,我将不胜感激。谢谢..

【问题讨论】:

标签: c# wpf xaml menu menuitem


【解决方案1】:

修改 MenuItem (WPF) 的样式比看起来更复杂,因为同一个 MenuItem 控件使用不同的模板,具体取决于分配给每个 MenuItem 的角色SubmenuItem em>、TopLevelHeaderSubmenuHeader。 使用菜单栏应该不会有任何问题:如果需要,您可以像使用任何其他控件一样定义样式和模板。对于 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>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2017-10-25
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多