如何禁用WPF MenuItem中的助记符?

我有动态字符串显示为MenuItem的标题,有时包含’_’。 WPF将下划线视为助记符的标志,但我不希望如此。 我如何禁用它?

在线程WPF列表框中尝试所有解决方案之后。 跳过字符串中的下划线符号 ,这似乎不适用于MenuItems,我这样做:

public class EscapeMnemonicsStringConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string str = value as string; return str != null ? str.Replace("_", "__") : value; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

另一种解决方案是将菜单文本放在具有调整属性的TextBox

如果在代码中构建MenuItem ,它将如下所示:

 var menuItem = new MenuItem(); var menuHeader = new Textbox(); menuHeader.Text = "your_text_here"; menuHeader.IsReadOnly = true; menuHeader.Background = Brushes.Transparent; menuHeader.BorderThickness = new Thickness(0); menuItem.Header = menuHeader; menuItem.ToolTip = "your detailed tooltip here"; menuItem.Click += YourEventHandlerHere; yourMenu.Items.Add(menuItem); 

如果你的菜单是在XAML中,而它只是动态的文本,它将如下所示:

      

然后你的代码可以动态设置dynamicMenu.Text = "what_ever"; 什么时候需要。