C#WPF MenuItem自定义模板

C# WPF MenuItem custom template(C#WPF MenuItem自定义模板)

本文介绍了C#WPF MenuItem自定义模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  • 第一个标题=从当前断开
  • 第二个标题=退出
  • ...
  • 具有不同标题文本的更多菜单项...

为了编辑第一个项目的一些颜色,我在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

如何将此模板用于仅更改标题文本的多个菜单项?

推荐答案

您可以只对TemplateBinding属性使用TemplateBinding,就像在Background属性上使用它一样:

<ControlTemplate TargetType="{x:Type MenuItem}">
    <Grid Background="{TemplateBinding Background}">
         <MenuItem Header="{TemplateBinding Header}" />
    </Grid>
</ControlTemplate>

这篇关于C#WPF MenuItem自定义模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:C#WPF MenuItem自定义模板