2014-09-01 60 views
1

我有Page包含一些控件,此页面将被加载到ContentControlWindow中。如何将焦点限制在WPF中的控件

现在,如何限制我的Page的焦点周期?在我的页面的最后一项中按TAB后,我不想将焦点传递给Page

作为一个短暂的,我怎样才能确定下一步的重点控制,改变它

+0

*你*试过了什么? – Sheridan 2014-09-01 10:43:41

+0

啊,一个巨大的答案是一个小问题。 作为示例: 1.对于除“页面”之外的所有其他控件,将“Focusable”设置为false,但它不专注于“Page”本身。因为它包含在Window中。 2.动态改变'Page'中所有其他控件的'TabIndex'。它不起作用,因为TabIndex无论如何都有一个值! 3.如此多,但我没有流利的英语来形容他们。 – 2014-09-01 11:01:27

+0

我可以通过问这个问题来完成我的问题: 我如何确定下一个控件集中在代码后面? – 2014-09-01 11:02:23

回答

1

它总是很难完全了解一个问题笔者想要什么时,他们也懒得为您提供多了几个匆忙打字的线条。不过,据我了解你的问题,似乎你有一些关注WPF应用程序的问题。

首先要做的是引导您到MSDN上的Focus Overview页面,在这里您可以找到WPF中使用的不同焦点类型。特别是,请注意以编程方式导航焦点部分,其中讨论TraversalRequest Class可帮助开发人员以编程方式移动焦点。

您还应该注意KeyboardNavigation部分讨论KeyboardNavigation Class。此类包含一些属性,使您能够定义在各种情况下密钥的工作方式,因此这可能是您所追求的内容。它是这样使用(从MSDN上的最后一个链接页面):

KeyboardNavigation.SetTabNavigation(navigationMenu, KeyboardNavigationMode.Cycle); 

以供将来参考,您将获得更快,更准确的答案,如果你提供清晰的问题,其中包括您的所有需求当时张贴。

+0

我可以说一个真正的感谢!这就是我一直在寻找的。 也许如果我写了“Cycle”,很容易回答。不过非常感谢。 – 2014-09-01 11:44:05

0

您是否尝试过查看FocusLost事件 - 您可能可以使用事件处理程序重新调整页面控件的焦点。

private void Page_LostFocus(object sender, System.Windows.RoutedEventArgs e) 
    { 
     ((UIElement)sender).Focus(); 
    } 
+0

是的,但它不起作用。 – 2014-09-01 11:48:02

+0

无论如何,看起来你现在已经有了一个可行的答案。 – kidshaw 2014-09-01 11:49:47