C# 如何根据在其子菜单中选择的值更改菜单项标题?
我几乎已经根据给定的图片制作了我的代码,我使用了菜单和子菜单,现在我想像上面的图片一样,当我选择子菜单的任何项目,即10、20或30时,它应该附加上标题logouttime,并且应该在我们悬停在任何项目上时显示给我们,如何执行此操作?我想精确执行图像中显示的操作。请帮助尝试以下代码: XAML 澄清 在MyMenuItem样式中,我们为所有MenuItem定义了一个Click and MouseEnter处理程序,它包含在headerLogoutTime中,在这里我们还设置了背景色 在headerLogoutTime中单击,然后在headerMin\u鼠标指针处理程序中,帮助设置MenuItem头的新值。选择类StringBuilder以提高处理字符串的性能 编辑:添加行作为分隔符 要像在图片中一样显示线条,请使用带有样式的控件:C# 如何根据在其子菜单中选择的值更改菜单项标题?,c#,wpf,xaml,menu,menuitem,C#,Wpf,Xaml,Menu,Menuitem,我几乎已经根据给定的图片制作了我的代码,我使用了菜单和子菜单,现在我想像上面的图片一样,当我选择子菜单的任何项目,即10、20或30时,它应该附加上标题logouttime,并且应该在我们悬停在任何项目上时显示给我们,如何执行此操作?我想精确执行图像中显示的操作。请帮助尝试以下代码: XAML 澄清 在MyMenuItem样式中,我们为所有MenuItem定义了一个Click and MouseEnter处理程序,它包含在headerLogoutTime中,在这里我们还设置了背景色 在heade
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>