2016-07-13 8 views
0

조금 갇혀서 도움이 될 수 있습니다. 달성하려면 StackPanel 바깥 쪽을 클릭 할 때마다 Visibility가 Hidden으로 바뀝니다. LostFocus가 실행되지 않음

아주 쉬운

, 나는 다음 조건을 썼다 : pnlLeftMenu 트리거해야하는 패널이다

private void pnlLeftMenu_LostFocus(object sender, RoutedEventArgs e) 
    { 
     if (pnlLeftMenu.IsFocused == false) 
     { 
      pnlLeftMenu.Visibility = Visibility.Hidden; 
     } 
    } 

. 는 여기에 설명 된 속성의 XAML 조각입니다 : 사실에 대한

<StackPanel x:Name="pnlLeftMenu"      
       Orientation="Vertical" 
       Height="475" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Bottom" 
       Margin="57,0,0,0" 
       Visibility="Hidden" 
       Background="{StaticResource BlueFadedBrush}" 
       IsVisibleChanged="pnlLeftMenu_IsVisibleChanged" 
       Focusable="True" 
       LostFocus="pnlLeftMenu_LostFocus" > 

걱정, 이미 숨겨져 있음 - 그것은 버튼을 클릭에 vissible 될 사이드 메뉴입니다. 그 부분은 잘 작동합니다.

그래서 질문입니다. 나는 무엇을 놓치고 있습니까? 왜냐하면 이렇게 보일 때 - 패널 바깥 쪽을 클릭하면 반응이 나타나지 않습니다.

+1

포커스를 얻었는지가 다음 숨겨져 같은 시도 스택 패널의 클릭 이벤트 처리기 내부의 부모 컨테이너에 클릭 이벤트를 추가 할 수 있습니까? –

+0

클릭시 속성이 변경됩니다. private void btnLeftMenuShow_Click (object sender, RoutedEventArgs e) { pnlLeftMenu.Visibility = Visibility.Visible; } –

+0

마찬가지로 포커스를 강제로 시도했습니다. private void btnLeftMenuShow_Click (object sender, RoutedEventArgs e) { pnlLeftMenu.Visibility = Visibility.Visible; pnlLeftMenu.Focus(); } –

답변

1

당신은 처음

if (pnlLeftMenu.IsVisible) 
    { 
     pnlLeftMenu.Visibility = Visibility.Hidden; 
    } 
+0

대단한 생각! 고맙습니다. –