Как можно выровнять текст ускорителя по правому краю в пункте меню Windows.Controls.ContextMenu? - PullRequest
2 голосов
/ 09 декабря 2010

В 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 Ответ

1 голос
/ 09 декабря 2010

Установите текст вашего ускорителя в свойство MenuItem.InputGestureText .

Также обратите внимание на замечание на странице документации: это свойство не связывает жест ввода с элементом меню; он просто добавляет текст в пункт меню. Приложение должно обработать ввод пользователя для выполнения действия. Информацию о том, как связать команду с элементом меню, см. В разделе «Команда».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...