2013-11-04 6 views

답변

5

메뉴 아이템에 작동하지 않았다 스레드 WPF listbox. Skip underscore symbols in strings, 모든 솔루션을 시도 후, 나는 이런 짓을 :

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

왜 당신은 이미 당신이 문제에 대한 해결책을 가지고 있습니까? 그것은 *이 사이트가 아닌 * *입니다. – Sheridan

+10

@Sheridan, 전적으로 그렇게 할 수 있습니다 ... 질문을 할 때, 게시하기 전에 대답 할 수있는 옵션이 있습니다. 문제를 발견하지 못했다면 미래의 시청자에게 매우 유용 할 수 있습니다. – SuperPrograman

+1

@SuperPrograman, 제가 개인적으로 동의하지는 않지만 도움말 페이지를 살펴본 결과 올바른지 인정합니다. 사과 Omer. – Sheridan

0

또 다른 해결책은 조정 속성으로 TextBox 안에 메뉴 텍스트를 넣어하는 것입니다 .

코드에 MenuItem을 구축하는 경우는 다음과 같을 것이다 :

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

를 메뉴는 XAML에 그것은 동적 텍스트 만있는 경우, 그 결과는 다음과 같습니다

<MenuItem Name="menuDynamic" Click="menuDynamic_Click"> 
    <MenuItem.Header> 
     <TextBox Name="dynamicMenu" 
       Text="With_Underscore" 
       IsReadOnly="True" 
       Background="Transparent" 
       BorderThickness="0" /> 
    </MenuItem.Header> 
</MenuItem> 

그러면 코드가 필요할 때 코드를 동적으로 dynamicMenu.Text = "what_ever";으로 설정할 수 있습니다.

관련 문제