Как предотвратить использование подчеркивания в качестве индикатора контрольной клавиши?

Я пытаюсь добавить пункт меню, например:

Items.Add(new MenuItem()
{
    Header = var_from_a_loop;
});

У var_from_a_loop есть некоторые подчеркивания. Скажем, var_from_a_loop = "A_B_C_D". При запуске это становится «AB_C_D», то есть удаляет первое подчеркивание. Теперь я знаю, что подчеркивание обрабатывается как индикатор сочетания клавиш (например, приведенное выше означает использование сочетания клавиш Ctrl + B), но я хочу отключить это. Я, вероятно, смог бы показать всю строку, сделав это:

Header = "_" + var_from_a_loop

Но я ищу лучшее решение, так как вышеприведенное "взломано".


person anupamb    schedule 01.08.2018    source источник
comment
Вам нужно избежать подчеркивания, попробуйте заменить их все двойным подчеркиванием.   -  person DavidG    schedule 02.08.2018


Ответы (1)


Если вы собираетесь использовать XAML, вы можете заставить это работать с помощью этого шаблона:

<ContextMenu x:Key="ContextMenu">
    <MenuItem>
        <MenuItem.Header>
            <TextBlock>_Some text here</TextBlock>
        </MenuItem.Header>
    </MenuItem>
</ContextMenu>  

Затем отобразится элемент с включенным подчеркиванием. Если вы используете Label вместо TextBlock, это будет считаться сочетанием клавиш.
Просто ради примера можно использовать указанное ContextMenu с Style. Скажем, мы добавляем контекстное меню к ListView элементам:

<Style TargetType="{x:Type ListViewItem}">
    <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}"/>
</Style>
person XAMlMAX    schedule 02.08.2018