在 Main.xaml 中我有这两个菜单项:
- 第一个 header = 断开当前连接
- 第二个标题 = 退出
- ...
- 具有不同标题文本的更多菜单项...
为了编辑第一个项目的一些颜色,我在 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>
现在我想对第二个菜单项执行相同的操作。问题在于不同的 header 。如果我从模板中删除 header ,即使 header 文本仍然存在于 Main.xaml 中,它也不会显示任何 header
如何将此模板用于许多菜单项,其中唯一改变的是标题文本?
最佳答案
你可以只使用 TemplateBinding在 Header 上属性的使用方式与您在 Background
属性上使用它的方式相同:
<ControlTemplate TargetType="{x:Type MenuItem}">
<Grid Background="{TemplateBinding Background}">
<MenuItem Header="{TemplateBinding Header}" />
</Grid>
</ControlTemplate>
关于C# WPF MenuItem 自定义模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24786479/