2009-12-23 59 views
16

是否有任何方法可以判斷控件(特別是System.Windows.Controls.TextBox)是否專注於Silverlight?我正在尋找類似如下(你會在一個普通的.NET應用程序見):在Silverlight中檢測控件的焦點

textBox.Focused 

這似乎是一些簡單和瑣碎從控制離開了,但我無法找到任何地方的答案。

更新

稍微更優雅的解決方案,結合羅布的回答,是創建一個擴展方法,像這樣:

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

回答

27

你必須使用FocusManager

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

謝謝。我想知道爲什麼微軟決定以這種方式處理它,而不是在其他任何地方(甚至他們自己的產品)處理它的方式...... – Dov 2009-12-23 16:46:15

+0

也許它有助於保持安裝程序更小? – 2009-12-23 16:49:56

0

由於只要您有一個由多個輸入元素組成的控件(它需要具有處理用戶輸入的焦點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; 
} 
相關問題