C# 如何根据在其子菜单中选择的值更改菜单项标题?

C# 如何根据在其子菜单中选择的值更改菜单项标题?,c#,wpf,xaml,menu,menuitem,C#,Wpf,Xaml,Menu,Menuitem,我几乎已经根据给定的图片制作了我的代码,我使用了菜单和子菜单,现在我想像上面的图片一样,当我选择子菜单的任何项目,即10、20或30时,它应该附加上标题logouttime,并且应该在我们悬停在任何项目上时显示给我们,如何执行此操作?我想精确执行图像中显示的操作。请帮助尝试以下代码: XAML 澄清 在MyMenuItem样式中,我们为所有MenuItem定义了一个Click and MouseEnter处理程序,它包含在headerLogoutTime中,在这里我们还设置了背景色 在heade

我几乎已经根据给定的图片制作了我的代码,我使用了菜单和子菜单,现在我想像上面的图片一样,当我选择子菜单的任何项目,即10、20或30时,它应该附加上标题logouttime,并且应该在我们悬停在任何项目上时显示给我们,如何执行此操作?我想精确执行图像中显示的操作。请帮助尝试以下代码:

XAML

澄清

在MyMenuItem样式中,我们为所有MenuItem定义了一个Click and MouseEnter处理程序,它包含在headerLogoutTime中,在这里我们还设置了背景色

在headerLogoutTime中单击,然后在headerMin\u鼠标指针处理程序中,帮助设置MenuItem头的新值。选择类StringBuilder以提高处理字符串的性能

编辑:添加行作为分隔符

要像在图片中一样显示线条,请使用带有样式的控件:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void headerLogoutTime_Click(object sender, RoutedEventArgs e)
    {
        SetMenuItemHeader(sender as MenuItem);
    }

    private void headerMin_MouseEnter(object sender, MouseEventArgs e)
    {
        SetMenuItemHeader(sender as MenuItem);
    }

    private void SetMenuItemHeader(MenuItem menuItem) 
    {
        var sb = new StringBuilder();

        if (menuItem != null)
        {
            headerLogoutTime.Header = "";
            headerLogoutTime.Header = sb.Append("LogOut Time: ").Append(headerLogoutTime.Header).Append(menuItem.Header);
        }
    }
}
然后像这样使用:

<Style x:Key="SeparatorStyleKey" 
        TargetType="{x:Type Separator}">

    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="Background" Value="White" />
    <Setter Property="Height" Value="1" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Separator}">
                <Rectangle SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                           Height="{TemplateBinding Height}"
                           Width="{TemplateBinding Width}"
                           Fill="{TemplateBinding Background}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Anatoliy Nikolaev感谢您的回答,我还想在每个菜单项后添加白色细线,如图所示,如何添加这些线?Anatoliy Nikolaev我在每个菜单项中添加了此代码-,以便一次只能检查菜单中的一项,我添加了此类-由patrick编写,但它给出的错误是MenuKinect是一个未声明的前缀。如何解决这个问题???@NikitaGupta:也许你会提出一个新问题,你不必在评论中问我?我回答了你的主要问题,以及关于分离器的评论问题。
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void headerLogoutTime_Click(object sender, RoutedEventArgs e)
    {
        SetMenuItemHeader(sender as MenuItem);
    }

    private void headerMin_MouseEnter(object sender, MouseEventArgs e)
    {
        SetMenuItemHeader(sender as MenuItem);
    }

    private void SetMenuItemHeader(MenuItem menuItem) 
    {
        var sb = new StringBuilder();

        if (menuItem != null)
        {
            headerLogoutTime.Header = "";
            headerLogoutTime.Header = sb.Append("LogOut Time: ").Append(headerLogoutTime.Header).Append(menuItem.Header);
        }
    }
}
<Style x:Key="SeparatorStyleKey" 
        TargetType="{x:Type Separator}">

    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="Background" Value="White" />
    <Setter Property="Height" Value="1" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Separator}">
                <Rectangle SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                           Height="{TemplateBinding Height}"
                           Width="{TemplateBinding Width}"
                           Fill="{TemplateBinding Background}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<MenuItem Header="Settings">
    <MenuItem x:Name="headerLogoutTime"
                Header="LogOut Time: 00 Min" 
                Background="#FF004165">

        <MenuItem x:Name="header10Min" 
                    Header="10 Min"
                    Style="{StaticResource MyMenuItem}" />

        <Separator Style="{StaticResource SeparatorStyleKey}" />

        <MenuItem x:Name="header20Min"
                    Header="20 Min"
                    Style="{StaticResource MyMenuItem}" />

        <Separator Style="{StaticResource SeparatorStyleKey}" />

        <MenuItem x:Name="header30Min"
                    Header="30 Min" 
                    Style="{StaticResource MyMenuItem}" />

        <Separator Style="{StaticResource SeparatorStyleKey}" />

        <MenuItem x:Name="header40Min"
                    Header="40 Min" 
                    Style="{StaticResource MyMenuItem}" />

        <Separator Style="{StaticResource SeparatorStyleKey}" />

        <MenuItem x:Name="header50Min" 
                    Header="50 Min"
                    Style="{StaticResource MyMenuItem}" />
    </MenuItem>

    <MenuItem Header="LogOut" Background="#FF004165" />
</MenuItem>