WPF DataGrid: как отключить выделение / фокус на конкретном DataGridRow? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу, чтобы, когда пользователь нажимал вниз / вверх, клавиатурный фокус пропускал отдельные строки и переходил за ними.Я попытался просто установить Focusable = false (на каждого потомка), в этом случае фокус не идет в этом ряду, но и не выходит за их пределы.

1 Ответ

0 голосов
/ 19 сентября 2019

Если вы используете MVVM, вы можете использовать DataGrid InputBindings для обработки клавиш со стрелками вверх и вниз и установить SelectedDataGridItem так, как вам нравится -

    <DataGrid ItemsSource="{Binding DataGridItems}"
              SelectionMode="Single"
              SelectionUnit="FullRow"
              SelectedItem="{Binding SelectedDataGridItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
        <DataGrid.InputBindings>
            <KeyBinding Command="{Binding Path=ChangeSelectedItemCommand}" 
                        CommandParameter="ArrowDown"
                        Key="Down"/>
            <KeyBinding Command="{Binding Path=ChangeSelectedItemCommand}"
                        CommandParameter="ArrowUp"
                        Key="Up"/>
        </DataGrid.InputBindings>
    </DataGrid>
...