Отключить ключ ускорителя ярлыков WPF (текст подчеркивания отсутствует)

Я устанавливаю значение .Content метки для строки, содержащей .Content подчеркивания; первый символ подчеркивания интерпретируется как ключ ускорителя.

Не меняя основную строку (заменив все _ на __ ), существует ли способ отключить ускоритель для ярлыков?

Если вы используете TextBlock в качестве содержимого ярлыка, его текст не будет воспринимать символы подчеркивания.

Вы можете переопределить свойство RecognizesAccessKey ContentPresenter, которое находится в шаблоне по умолчанию для метки. Например:

         

Используйте <"Text Block">"<"/Text Block"> вместо <"label"><"/label"> для печати точного текста с подчеркиванием.

Почему бы не так?

 public partial class LabelEx : Label { public bool PreventAccessKey { get; set; } = true; public LabelEx() { InitializeComponent(); } public new object Content { get { var content = base.Content; if (content == null || !(content is string)) return content; return PreventAccessKey ? (content as string).Replace("__", "_") : content; } set { if (value == null || !(value is string)) { base.Content = value; return; } base.Content = PreventAccessKey ? (value as string).Replace("_", "__") : value; } } } 
  • Алгоритм для выделения перекрывающихся прямоугольников?
  • Сериализовать компоненты JavaFX
  • Слушатель модели JTable слишком быстро обнаруживает вставленные строки (до их рисования)
  • Какова связь между ContentPane и JPanel?
  • Масштабировать пользовательский интерфейс для нескольких разрешений / различных устройств
  • Как создать RecyclerView с несколькими типами просмотра?
  • Как лучше всего настроить Swing GUI?
  • Swing vs JavaFx для настольных приложений
  • Как выравнивать представления в нижней части экрана?
  • Добавьте n прямоугольников в canvas с MVVM в WPF
  • Как получить центр большого пальца изображения UISlider
  • Давайте будем гением компьютера.