我们为不想或不能使用鼠标的人使用选项卡导航。
当我通过选项卡导航到列表框时,第一项将被聚焦但未被选中。当我再次按 tab 键时,第二项也将被选中。对我来说,这是一种奇怪的行为。
如何选择选项卡焦点上的第一项?
谢谢!
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox Text="Focus"/>
<ListBox Grid.Row="1" KeyboardNavigation.TabNavigation="Continue">
<ListBoxItem Content="Test1"/>
<ListBoxItem Content="Test2"/>
<ListBoxItem Content="Test3"/>
</ListBox>
</Grid>
第一步
第二步
第三步
通常,用户不希望制表器键修改当前选择:它们按 Tab 键聚焦不同的控件,然后使用箭头键和/或空格键选择项目。这似乎是 WPF 的 ListBox 实现中的一个错误,它不仅KeyboardNavigation.TabNavigation="Continue"
修改当前的键盘焦点,而且还选择一个项目。
如果仍希望选择焦点项,只需将事件处理程序(或相应的行为)添加到列表框中:
private void OnListBoxGotFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource is ListBoxItem listBoxItem)
{
listBoxItem.IsSelected = true;
}
}