TabNavigation для выбора первого элемента ListBox - PullRequest
2 голосов
/ 29 апреля 2019

Мы используем tabnavigation для людей, которые не хотят или не могут использовать мышь.

Когда я перемещаюсь по вкладке в Listbox, первый элемент будет сфокусирован , но не выбран .Когда я снова вкладок, будет выбран второй элемент.Для меня это странное поведение.

Как можно также выбрать первый элемент в фокусе вкладки?

Спасибо!

<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>

1-й шаг

2-й шаг

3-й шаг

1 Ответ

1 голос
/ 29 апреля 2019

Как правило, пользователи не ожидают, что клавиша табуляции изменит текущий выбор: они перемещаются, чтобы сфокусировать различные элементы управления, а затем выбирают элементы с помощью клавиш со стрелками и / или пробела. Похоже, ошибка в реализации ListBox в WPF заключается в том, что KeyboardNavigation.TabNavigation="Continue" не только изменяет текущий фокус клавиатуры, но и выделяет элемент.

Если вы все еще хотите, чтобы выбранный элемент был выбран, вы можете просто добавить обработчик событий (или соответствующее поведение) в свой список:

private void OnListBoxGotFocus(object sender, RoutedEventArgs e)
{
    if (e.OriginalSource is ListBoxItem listBoxItem)
    {
        listBoxItem.IsSelected = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...