TabNavigation选择ListBox的第一个项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TabNavigation选择ListBox的第一个项目相关的知识,希望对你有一定的参考价值。

我们正在为那些不想要或不能使用鼠标的人使用tabnavigation。

当我通过选项卡导航到列表框时,第一个项目将被聚焦但未被选中。再次选中时,也会选择第二个项目。对我来说这是一种奇怪的行为。

如何选择标签焦点上的第一个项目呢?

谢谢!

<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

答案

通常,用户不希望制表符键修改当前选择:它们选中以聚焦不同的控件,然后使用箭头键和/或空格选择项目。这似乎是WPF的ListBox实现中的一个错误,KeyboardNavigation.TabNavigation="Continue"不仅修改了当前的键盘焦点,还选择了一个项目。

如果您仍然希望选择焦点项,则只需将事件处理程序(或相应的行为)添加到列表框中:

private void OnListBoxGotFocus(object sender, RoutedEventArgs e)
{
    if (e.OriginalSource is ListBoxItem listBoxItem)
    {
        listBoxItem.IsSelected = true;
    }
}

以上是关于TabNavigation选择ListBox的第一个项目的主要内容,如果未能解决你的问题,请参考以下文章

VBA中如何使用ListBox控件呢?

仅捕获 ListBox 中的第一个单词

VBA 如何取ListBox中的第i行数据

WPF 成员“TabNavigation”无法识别或无法访问。

React---零基础学习React之React TabNavigation

如果 ListBox 使用数据绑定,如何在加载时正确设置焦点?