【问题标题】:Detecting a control's focus in Silverlight在 Silverlight 中检测控件的焦点
【发布时间】:2010-12-29 13:08:19
【问题描述】:

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

textBox.Focused

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

更新

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

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

【问题讨论】:

    标签: c# silverlight controls textbox focus


    【解决方案1】:

    你必须使用FocusManager

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

    【讨论】:

    • 谢谢。我想知道为什么微软决定以这种方式处理它,而不是其他地方(甚至是他们自己的产品)的处理方式......
    • 也许它有助于使安装程序更小?
    【解决方案2】:

    一旦你有一个包含多个输入元素(需要有焦点来处理用户输入)的控件,那么询问 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-12
      • 2014-05-03
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多