例如,我有Grid
,其中有两行,而它们之间有GridSplitter
。当用户界面中的行不可见时(例如,分隔符一直排在最前面;实际情况下,嵌套控件更加复杂),可以通过Tab键访问元素-我想防止这种情况。
我知道IsVisible
的{{1}}属性(即使对于此类元素也是如此)和/或FrameworkElement
/ IsEnabled
和IsTabStop
类,但没有一个解决我的问题。我的元素可用,等等,由于网格拆分器,当前在UI中不可见。基本上,只有鼠标可以访问的框架元素也应该参与Tab键功能。
可以复制的最简单情况是跟随主窗口的内容(将拆分器移到最高位置)。
KeyboardNavigation
结果应该是不可见元素应该被跳过,而下一个可见元素应该被聚焦。此功能应与 <Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="10"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" KeyboardNavigation.TabNavigation="Once"/>
<GridSplitter Height="10" Grid.Row="1" KeyboardNavigation.TabNavigation="Once" HorizontalAlignment="Stretch"/>
<Grid Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox x:Name="PART_Problem" Grid.Row="0" KeyboardNavigation.TabNavigation="Once"/>
<TextBox Grid.Row="1" KeyboardNavigation.TabNavigation="Once"/>
</Grid>
</Grid>
兼容。
编辑1:稍微改变一下样本以显示KeyboardNavigation.ControlTabNavigation
保持PART_Problem
为某个非零值,从而消除了基于尺寸变化的解决方案。
答案 0 :(得分:0)
尝试在XAML中设置属性Focusable="False"