Как мы можем предотвратить использование подчеркивания в качестве контрольного ключевого индикатора?

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

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

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

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>
Другие вопросы по тегам