C# 检测控件';银光中的焦点

C# 检测控件';银光中的焦点,c#,silverlight,controls,textbox,focus,C#,Silverlight,Controls,Textbox,Focus,有没有办法判断控件(特别是System.Windows.Controls.TextBox)是否在Silverlight中聚焦?我正在寻找以下内容(您在常规.Net应用程序中会看到): 这似乎是一件简单而琐碎的事情,需要从控件中删除,但我在任何地方都找不到答案 更新 结合Rob的答案,一个稍微优雅一点的解决方案是创建如下扩展方法: public static bool IsFocused( this Control control ) { return FocusManager.GetFo

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

这似乎是一件简单而琐碎的事情,需要从控件中删除,但我在任何地方都找不到答案

更新

结合Rob的答案,一个稍微优雅一点的解决方案是创建如下扩展方法:

public static bool IsFocused( this Control control )
{
    return FocusManager.GetFocusedElement() == control;
}
你必须使用


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

谢谢我想知道为什么微软决定用这种方式来处理它,而不是像其他地方(甚至他们自己的产品)那样处理它……也许这有助于使安装程序更小?
bool b = FocusManager.GetFocusedElement() == textBox;
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;
}