C# WPF MenuItem 自定义模板

2024-01-08

在 Main.xaml 中,我有这两个菜单项:

  • 第一个带有标题=断开电流
  • 第二个带标题=Quit
  • ...
  • 更多具有不同标题文本的菜单项...

为了编辑第一个项目的一些颜色,我在 App.xaml 中创建了一个自定义模板:

<!--Template for Menu Items-->
    <Style x:Key="MenuItemBaseStyle" TargetType="MenuItem">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Background" Value="#0a99f3" />
                <Setter Property="Foreground" Value="White"/>
            </Trigger>
        </Style.Triggers>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type MenuItem}">
                    <Grid Background="{TemplateBinding Background}">
                        <MenuItem Header="DISCONNECT FROM CURRENT" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

在 Main.xaml 中:

<MenuItem Header="CONNECTION">
    <MenuItem Style="{StaticResource MenuItemBaseStyle}" Header="DISCONNECT FROM CURRENT" />
    <MenuItem Header="QUIT"/>
</MenuItem>

现在我想对第二个菜单项执行相同的操作。问题在于不同的标头。如果我从模板中删除标题,即使标题文本仍然存在于 Main.xaml 中,它也不会显示任何标题

如何将此模板用于许多唯一更改的是标题文本的菜单项?


你可以只使用模板绑定 http://msdn.microsoft.com/en-us/library/cc189062(v=vs.95).aspx on the Header http://msdn.microsoft.com/en-us/library/system.windows.controls.headereditemscontrol.header(v=vs.110).aspx属性的使用方式与您在Background财产:

<ControlTemplate TargetType="{x:Type MenuItem}">
    <Grid Background="{TemplateBinding Background}">
         <MenuItem Header="{TemplateBinding Header}" />
    </Grid>
</ControlTemplate>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# WPF MenuItem 自定义模板 的相关文章

随机推荐