silverlight 中的 IsKeyboardFocusWithin

发布于 2024-12-06 21:40:03 字数 46 浏览 1 评论 0原文

如何让键盘焦点位于 Silverlght 中元素或其视觉树子元素内的任何位置?

How to get the keyboard focus is anywhere within the element or its visual tree child elements in Silverlght?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜访吸血鬼 2024-12-13 21:40:03

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

首先,您可以使用 FocusManager.GetFocusedElement() 静态方法来获取当前具有焦点的元素。然后,您可以使用 VisualTreeHelper 来确定该元素是否与您的元素一起。我通常会使用扩展类来使 VisualTreeHelper 的使用变得更容易。我的位于此处。就在那个班级在场的情况下。然后:-

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 事件中。然后,您可以在焦点进入或离开元素内的任何控件时进行跟踪。

There are two possible solutions depending on your scenario (we usually prefer more detail in a question).

First you can use the FocusManager.GetFocusedElement() static method to get the element that currently has the focus. You could then use the VisualTreeHelper to determine if the element is with the your element. I would normally use an extension class to make using VisualTreeHelper easier. Mine is found here. With that class present. Then:-

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

The second approach is to add event handlers to the GotFocus and LostFocus events of your element. You can then track whenever the focus enters or leaves any control within your element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文