2011-09-29 7 views

답변

3

시나리오에 따라 가능한 해결책은 두 가지가 있습니다. 일반적으로 질문에 더 자세히 설명되어 있습니다.

먼저 FocusManager.GetFocusedElement() 정적 메서드를 사용하여 현재 포커스가있는 요소를 가져올 수 있습니다. 그런 다음 VisualTreeHelper을 사용하여 해당 요소가 귀하의 요소와 일치하는지 확인할 수 있습니다. 일반적으로 확장 클래스를 사용하여 VisualTreeHelper을 쉽게 사용합니다. 내 것은 here입니다. 그 계급 출석. 그런 다음 -

public static bool IsFocusIn(DependencyObject element) 
{ 
     DependendyObject focusedElement = FocusManager.GetFocusedElement() as DependencyObject; 
     if (focusedElement != null) 
     { 
      return focusedElement.Ancestors().Any(e => e == element); 
     } 
     return false; 
} 

두 번째 방법은 요소의 GotFocusLostFocus 이벤트에 이벤트 핸들러를 추가하는 것입니다. 그런 다음 포커스가 요소에 입력되거나 제어를 벗어날 때마다 추적 할 수 있습니다.

관련 문제