MenuItem のヘッダーとして動的文字列が表示されますが、これには「_」が含まれることがあります。WPF はアンダースコアをニーモニックの記号として扱いますが、私はそれを望んでいません。どうすればそれを無効にできますか?
			
			1522 次
		
2 に答える
            6        
        
		
スレッドWPF リストボックスのすべてのソリューションを試した後。MenuItems では機能しないように見えた、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();
    }
}
于 2013-11-04T14:04:51.107   に答える
    
    
            2        
        
		
別の解決策は、メニュー テキストを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 であり、それが動的なテキストのみである場合、次のようになります。
<MenuItem Name="menuDynamic" Click="menuDynamic_Click">
    <MenuItem.Header>
        <TextBox Name="dynamicMenu"
                 Text="With_Underscore"
                 IsReadOnly="True"
                 Background="Transparent"
                 BorderThickness="0" />
    </MenuItem.Header>
</MenuItem>
dynamicMenu.Text = "what_ever";その後、必要なときにコード ビハインドを動的に設定できます。
于 2015-10-07T17:06:03.853   に答える