IsKeyboardFocusWithin在silverlight中

时间:2011-09-29 11:36:19

标签: silverlight silverlight-4.0 focus

如何获得键盘焦点是在Silverlght元素或其可视树子元素中的任何位置?

1 个答案:

答案 0 :(得分:3)

根据您的情况,有两种可能的解决方案(我们通常更喜欢问题中的更多细节)。

首先,您可以使用FocusManager.GetFocusedElement()静态方法来获取当前具有焦点的元素。然后,您可以使用VisualTreeHelper来确定元素是否与您的元素一致。我通常会使用扩展类来更轻松地使用VisualTreeHelper。我找到了here。随着那堂课的到来。则: -

public static bool IsFocusIn(DependencyObject element)
{
      DependendyObject focusedElement = FocusManager.GetFocusedElement() as DependencyObject;
      if (focusedElement != null)
      {
           return focusedElement.Ancestors().Any(e => e == element);
      }
      return false;
}

第二种方法是将事件处理程序添加到元素的GotFocusLostFocus事件中。然后,您可以在焦点进入或离开元素中的任何控件时进行跟踪。