【问题标题】:TabNavigation to select ListBox's first itemTabNavigation 选择 ListBox 的第一项
【发布时间】:2023-03-25 12:06:02
【问题描述】:

我们正在为不想或不能使用鼠标的人使用标签导航。

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

如何同时选择标签焦点上的第一项?

谢谢!

<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 tabstop keyboard-navigation


    【解决方案1】:

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

    如果您仍然希望选择焦点项目,您可以在列表框中添加一个事件处理程序(或相应的行为):

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多