我在WPF menuitem中如何禁用助记符?

问题描述 投票:0回答:3
我有动态的字符串作为Menuitem的标题,有时包含“ _”。 WPF将下划线视为助记符的标志,但我不想要。我如何禁用?

c# wpf menuitem
3个回答
6
投票
尝试线程中的所有解决方案

WPFListBox。跳过Strings中的符号,似乎在菜单上不起作用,我做到了:

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(); } }
    

2
投票
替代解决方案是将您的菜单文本放入A the以调整后的属性。

如果在代码中构建您的
TextBox

,则看起来像这样:

MenuItem

如果您的菜单在XAML中,而只是动态的文本,则看起来像这样:
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);

然后您的代码在需要时可以动态设置
<MenuItem Name="menuDynamic" Click="menuDynamic_Click">
    <MenuItem.Header>
        <TextBox Name="dynamicMenu"
                 Text="With_Underscore"
                 IsReadOnly="True"
                 Background="Transparent"
                 BorderThickness="0" />
    </MenuItem.Header>
</MenuItem>

@Jesse Chisholm的答案很棒。我只会添加以下内容:


0
投票

这允许鼠标在文本框上单击由父(menuitem)处理,并且还避免了鼠标光标更改。


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.