TabNavigation 到 select ListBox 的第一项
TabNavigation to select ListBox's first item
我们正在为那些不想或不能使用鼠标的人使用标签导航。
当我通过选项卡导航到列表框时,第一个项目将成为焦点 ,而不是 selected。当我再次点击时,第二个项目也将被 selected。对我来说这是一种奇怪的行为。
如何 select 第一项也成为选项卡焦点?
谢谢!
<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>
1st step
2nd step
3rd step
通常,用户不会期望制表键修改当前的 selection:他们四处切换以聚焦不同的控件,然后使用箭头键 select 项目 and/or space。这似乎是 WPF 的 ListBox 实现中的一个错误,KeyboardNavigation.TabNavigation="Continue"
不仅修改了当前的键盘焦点,而且 select 了一个项目。
如果您仍希望select编辑焦点项,您可以只向列表框添加一个事件处理程序(或相应的行为):
private void OnListBoxGotFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource is ListBoxItem listBoxItem)
{
listBoxItem.IsSelected = true;
}
}
我们正在为那些不想或不能使用鼠标的人使用标签导航。
当我通过选项卡导航到列表框时,第一个项目将成为焦点 ,而不是 selected。当我再次点击时,第二个项目也将被 selected。对我来说这是一种奇怪的行为。
如何 select 第一项也成为选项卡焦点?
谢谢!
<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>
1st step
2nd step
3rd step
通常,用户不会期望制表键修改当前的 selection:他们四处切换以聚焦不同的控件,然后使用箭头键 select 项目 and/or space。这似乎是 WPF 的 ListBox 实现中的一个错误,KeyboardNavigation.TabNavigation="Continue"
不仅修改了当前的键盘焦点,而且 select 了一个项目。
如果您仍希望select编辑焦点项,您可以只向列表框添加一个事件处理程序(或相应的行为):
private void OnListBoxGotFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource is ListBoxItem listBoxItem)
{
listBoxItem.IsSelected = true;
}
}