2013-03-12 2 views
2

하위 메뉴가있는 메뉴로 애플리케이션을 작성하고 있습니다. 또한 사용자가 키보드로 메뉴를 탐색 할 때 포커스가있는 MenuItem에 대한 정보를 표시하고자하는 StatusBar가 있습니다. 각 MenuItem에서 GotFocus 이벤트를 처리하고 StatusBar의 내용을 보낸 사람의 태그로 변경하려고했지만 1.1 및 2.2가 아닌 MenuItem 1에서만 작동합니다.하위 메뉴에 Focused MenuItem 가져 오기 WPF

XAML :

<Menu Height="23" x:Name="mainMenu"> 
    <MenuItem Header="Header1" Tag="Info1" GotFocus="MenuItem_GotFocus_1"> 
     <MenuItem Header="Header1.1" Tag="Info1.1" GotFocus="MenuItem_GotFocus_1"/> 
     <MenuItem Header="Header1.2" Tag="Info1.1" GotFocus="MenuItem_GotFocus_1"/> 
     ... 
    </MenuItem> 
    ... 
</Menu> 

C 번호 :

private void MenuItem_GotFocus_1(object sender, RoutedEventArgs e) 
{ 
    statusBarItem.Content = (sender as FrameworkElement).Tag; 
} 

어떻게 하위 메뉴의 집중 항목에 대한 정보를 표시 할 수 있습니까? 어쩌면 다른 방법이 있을까요?

감사합니다. Aleksandr.

+0

했다 아래 도움의.? – NSGaga

답변

0

당신이 정확하게 필요에 적용하지만 난 당신이 필요하다고 생각하는 경우 확실하지 ...

그것은 뷰 - 모델에 결합하는 것이 가장 - 그리고 당신은 다른 어떤에서 그 '상태'에 노출 될 수 있습니다 장소에 간단하게 바인딩하여 ...

IsFocused의 경우 (읽기 전용이므로 읽기 전용이므로 뭔가 표준 바인딩 된 WPF 메뉴 항목에 대해 약간의 문제가 있습니다.) like
http://meleak.wordpress.com/2011/08/28/onewaytosource-binding-for-readonly-dependency-property/
(이 해결책의 좋은 예이며 ActiveWidth/Height 만 비슷합니다.)

<TreeView.ItemContainerStyle> 
<Style TargetType="{x:Type TreeViewItem}"> 
    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
    <Setter Property="pb:PushBindingManager.StylePushBindings"> 
      <Setter.Value> 
    <pb:PushBindingCollection> 
    <pb:PushBinding TargetProperty="IsFocused" Path="IsFocused"/> 
    </pb:PushBindingCollection> 
      </Setter.Value> 
    </Setter> 

당신은 위의 문서의 링크에서 해당을 지원하기 위해 프로젝트/lib 디렉토리를 다운로드 할 수 있습니다 (PushBindingManager) 이 xmlns:pb="clr-namespace:PushBindingExtension;assembly=some-assembly" 같은 (I 통합 그래서 정확한 소스/이름이없는, 그것을 복사 한 넣어 이리).

그리고 이동하도록 설정해야합니다. 보기 모델에 IsFocused을 만들고 메뉴를 바인딩 한 다음 상태에 is focused 항목을 올려 놓으십시오. 여기에 필요한 '다리 작업'이 있지만 아주 간단합니다.

희망이

참고하는 데 도움이 : 다운로드 다른 링크를 이용해 (즉 http://dl.dropbox.com/u/39657172/Blog/PushBindingInStyleDemo.zip)
(즉, 하나의 스타일에 필요한 StylePushBindings를 포함

관련 문제