Mam ciągi dynamiczne pojawiają się jako nagłówek MenuItem, który czasami zawiera "_". WPF traktuje podkreślniki jako znaki dla mnemoników, ale ja tego nie chcę. Jak mogę to wyłączyć?Jak wyłączyć Mnemoniki w elementach menu WPF?
6
A
Odpowiedz
5
Po wypróbowaniu wszystkich rozwiązań w wątku WPF listbox. Skip underscore symbols in strings, które nie wydają się działać na menuitems, zrobiłem to:
public class EscapeMnemonicsStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string str = value as string;
return str != null ? str.Replace("_", "__") : value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
0
Alternatywnym rozwiązaniem jest umieszczenie tekstu Menu wewnątrz TextBox
z dostosowanych właściwości .
Jeśli budowanie MenuItem
w kodzie to będzie wyglądać następująco:
var menuItem = new MenuItem();
var menuHeader = new Textbox();
menuHeader.Text = "your_text_here";
menuHeader.IsReadOnly = true;
menuHeader.Background = Brushes.Transparent;
menuHeader.BorderThickness = new Thickness(0);
menuItem.Header = menuHeader;
menuItem.ToolTip = "your detailed tooltip here";
menuItem.Click += YourEventHandlerHere;
yourMenu.Items.Add(menuItem);
Jeśli menu jest w XAML i jest to tylko tekst, który jest dynamiczny, to będzie wyglądać następująco:
<MenuItem Name="menuDynamic" Click="menuDynamic_Click">
<MenuItem.Header>
<TextBox Name="dynamicMenu"
Text="With_Underscore"
IsReadOnly="True"
Background="Transparent"
BorderThickness="0" />
</MenuItem.Header>
</MenuItem>
Następnie Twój kod mógł dynamicznie ustawić dynamicMenu.Text = "what_ever";
, gdy był potrzebny.
Dlaczego miałbyś zadać pytanie, na które masz już rozwiązanie? To nie jest * czym jest ta strona. – Sheridan
@Sheridan, jest to całkowicie dozwolone ... Kiedykolwiek zadasz pytanie, masz możliwość odpowiedzi, zanim nawet opublikujesz to. Jeśli Twój problem jest taki, że nie można znaleźć niczego na temat, może to być przydatne dla przyszłych widzów. – SuperPrograman
@SuperPrograman, podczas gdy ja nie zgadzam się z tym osobiście, przejrzałem strony pomocy i teraz akceptuję, że masz rację. Przepraszam Omer. – Sheridan