2009-12-23 4 views
16

컨트롤 (특히 System.Windows.Controls.TextBox)이 Silverlight에 포커스가 있는지 여부를 확인하는 방법이 있습니까? 나는 (당신이 정기적 닷넷 응용 프로그램에서 참조 할 것) 다음과 같은 뭔가를 찾고 있어요 :Silverlight에서 컨트롤의 포커스 감지

textBox.Focused 

이것은 컨트롤에서 생략하는 간단하고 사소한 일처럼 보인다, 아직 찾을 수없는 아무 데나 대답.

업데이트

약간 더 우아한 솔루션, 롭의 답변을 통합하는 것은, 이렇게 같은 확장 방법을 만드는 것입니다 : 당신은 FocusManager

bool b = FocusManager.GetFocusedElement() == textBox; 

답변

27

을 곧 하나 이상의 입력 요소로 구성된 컨트롤이있는 경우 (사용자 입력을 처리하기위한 포커스가 있어야 함) t) FocusManager에게 더 이상 트릭을하지 말 것을 요청합니다. 사용해보기 :

private bool HasFocus { get; set; } 

protected override void OnGotFocus(RoutedEventArgs e) 
{ 
    base.OnGotFocus(e); 
    HasFocus = true; 
} 

protected override void OnLostFocus(RoutedEventArgs e) 
{ 
    base.OnLostFocus(e); 
    HasFocus = false; 
} 
+1

감사합니다. 나는 마이크로 소프트가 다른 곳에서 처리하는 방식 대신에 이런 식으로 처리하기로 결정한 이유에 대해 궁금해한다. (심지어 자신의 제품조차도) ... – Dov

+0

아마도 설치 프로그램을 작게 유지하는 데 도움이 될까? –

0

로를 사용할 필요가

public static bool IsFocused(this Control control) 
{ 
    return FocusManager.GetFocusedElement() == control; 
} 
관련 문제