在Silverlight中检测控件的焦点

时间:2009-12-23 16:06:16

标签: c# silverlight controls textbox focus

有没有办法判断控件(特别是System.Windows.Controls.TextBox)是否集中在Silverlight中?我正在寻找类似以下内容(您将在常规.Net应用程序中看到的内容):

textBox.Focused

从控件中省略这似乎是一件简单而微不足道的事情,但我无法在任何地方找到答案。

更新

一个稍微更优雅的解决方案,结合Rob的答案,就是创建一个类似的扩展方法:

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

2 个答案:

答案 0 :(得分:27)

您必须使用FocusManager

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

答案 1 :(得分:0)

只要你有一个由多个输入元素组成的控件(需要有焦点来处理用户输入),请求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;
}