【问题标题】:How to disable tab stop on a stackpanel如何在堆栈面板上禁用制表位
【发布时间】:2012-06-06 21:35:37
【问题描述】:

我有一个堆栈面板,当我在应用程序中四处切换时,它会不断获得焦点。

使用 snoop,我可以看到堆栈面板有一个 ContentControl,它有一个 ContentPresenter。获得焦点的是 ContentControl。我怎样才能禁用它?为什么这是默认行为?

【问题讨论】:

  • 除非您设置Focusable="True"(默认为False),否则StackPanel 应该无法获得焦点。这个StackPanel在哪里,Window/UserControlItemsControl
  • 在 ContentControl 上设置 Focusable="False" 会发生什么?

标签: wpf stackpanel tabstop


【解决方案1】:

这不是默认行为,如果它已被某些资源覆盖,那么您可以使用

重置它
KeyboardNavigation.IsTabStop="False"

或者……

FocusManager.IsFocusScope="False"

【讨论】:

  • 这两种方法有什么区别?
  • FocusManager.IsFocusScope="False" 对我不起作用,但 KeyboardNavigation.IsTabStop="False" 对我有用
【解决方案2】:

使用 StackPanel 作为容器的 DataTemplate 也有类似的问题。然后将 DataTemplate 用于 ListBox 项。在我在实际列表框上使用以下内容之前,没有任何建议对我有用以防止项目接收制表位:

KeyboardNavigation.TabNavigation="None"

【讨论】:

  • 或者后面的代码:KeyboardNavigation.SetTabNavigation(control, KeyboardNavigationMode.None);
  • 你如何在 UWP 中做到这一点?说“不支持”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多