如何在Windows.Controls.ContextMenu menuitem中右键对齐加速器文本?

时间:2010-12-09 03:35:52

标签: c# .net wpf .net-4.0 contextmenu

在Win32 API中,制表符(\t)用于在菜单项("Open\tCtrl+O")中显示右对齐文本(如加速器/快捷键)。在C#应用程序中,我有一个派生自System.Windows.Controls.ContextMenu的类,看起来以类似的方式使用制表符不会达到相同的结果;它实际上插入了一个标签,因此快捷方式看起来比右对齐更加居中对齐。

我知道.net _代替Win32 &用于助记符下划线。是否有\t的类似替代品?

编辑:上下文代码(没有ICommand实现)

internal class MyContextMenu : ContextMenu, ICommand
{
    private readonly string[] wordList;
    public MyContextMenu(string aWord)
    {
        var itemStyle = (Style) TryFindResource("EditorContextMenuItem");
        wordList = GetMyWordList(aWord);
        if (wordList != null)
        {
            for (int i = 0; i < wordList.Length; ++i)
            {
                string word = wordList[i];
                var item = new MenuItem
                                {
                                    Style = itemStyle,
                                    Header = BuildMenuText(i + 1, word),
                                    Command = this,
                                    CommandParameter = i
                                };
                this.Items.Add(item);
            }
        }
    }

    static private string BuildMenuText(int index, string text)
    {
        string menuText;
        if (index > 0 && index < 16)
            menuText = text + "\t_" + index.ToString("x");
        else
            menuText = "_" + text;

        return menuText;
    }
}

1 个答案:

答案 0 :(得分:1)

将加速器文本设置为MenuItem.InputGestureText属性。

另外,请注意文档页面中的注释:此属性不会将输入手势与菜单项相关联;它只是将文本添加到菜单项。应用程序必须处理用户的输入以执行操作。有关如何将命令与菜单项关联的信息,请参阅命令。