有没有办法强制聚焦导航(由Tab键或MoveFocus
方法控制)包装在给定容器内?我已经包含了在下面演示此问题的代码。最简单的方法是让Tab将焦点从TextBox
“Charlie”移动到TextBox
“Able”(对于TextBox
“Able”上的Shift + Tab,反之亦然)而非移动它到MenuItem
“Alpha”?
<Window x:Class="NavWrapExample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<DockPanel LastChildFill="True">
<Menu DockPanel.Dock="Top">
<MenuItem Header="Alpha" />
<MenuItem Header="Bravo" />
<MenuItem Header="Charlie" />
</Menu>
<StackPanel>
<TextBox Text="Able" />
<TextBox Text="Baker" />
<TextBox Text="Charlie" />
</StackPanel>
</DockPanel>
</Window>
答案 0 :(得分:4)
使用Ke yboardNavigation.TabNavigation附加属性,如下所示:
<StackPanel KeyboardNavigation.TabNavigation="Cycle">
<TextBox Text="Able" />
<TextBox Text="Baker" />
<TextBox Text="Charlie" />
</StackPanel>
在Mark Smith's blog找到答案。
答案 1 :(得分:-1)
听起来你想要的是与工具栏相同的行为:你可以将它们标记到它们中,但是一旦工具栏中的一个元素获得键盘焦点,就会将焦点循环到其中。如果是这样,请按如下方式使用FocusManager:
<StackPanel FocusManager.IsFocusScope="True">
<!-- Controls go here... -->
</StackPanel>