Distriggers chiave acceleratore di etichette WPF (manca il carattere di sottolineatura del testo)

Sto impostando il valore .Content di un’etichetta su una stringa che contiene caratteri di sottolineatura; il primo carattere di sottolineatura viene interpretato come un tasto di scelta rapida.

Senza cambiare la stringa sottostante (sostituendo tutto _ con __ ), c’è un modo per disabilitare l’acceleratore per Etichette?

Se si utilizza TextBlock come contenuto dell’etichetta, il suo testo non assorbe i caratteri di sottolineatura.

È ansible sovrascrivere la proprietà RecognizesAccessKey di ContentPresenter che si trova nel modello predefinito per l’etichetta. Per esempio:

         

Usa un <"Text Block">"<"/Text Block"> invece di <"label"><"/label"> per stampare il testo esatto che sta avendo caratteri di sottolineatura.

Perché non piace questo?

 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; } } }