Вкладка Фокус всей DataGrid, а не каких-либо элементов в DataGrid (будет использовать кнопки со стрелками / страницами для навигации в DataGrid) - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть страница с сеткой данных и несколькими кнопками. У меня есть SelectionUnit DataGrid, настроенный для FullRow.

        <Button Grid.Row="0" Height="20" Width="50" Content="Config" FontSize="11"               
                Background="{StaticResource DefButtonBackgroundBrush}"/>

        <DataGrid Grid.Row="1"
                  AutoGenerateColumns="False"
                  IsReadOnly="True"
                  SelectionMode="Single"
                  SelectionUnit="FullRow"
                  GridLinesVisibility="None"
                  Name="MatipBatapConfigList"               
                  ColumnHeaderStyle="{StaticResource DGHdr_2LineNormal}"
                  ItemsSource="{Binding}">
            ...........................
        </DataGrid>

        <Button Grid.Row="2" Height="20" Width="50" Content="Edit" FontSize="11"               
                Background="{StaticResource DefButtonBackgroundBrush}"/>

        <Button Grid.Row="3" Height="20" Width="50" Content="Add" FontSize="11"               
                Background="{StaticResource DefButtonBackgroundBrush}"/>

        <Button Grid.Row="4" Height="20" Width="50" Content="Delete" FontSize="11"               
                Background="{StaticResource DefButtonBackgroundBrush}"/>

Если я начинаю вкладку, порядок фокусировки будет

  • Кнопка конфигурации
  • Столбец 0 заголовок DataGrid
  • заголовок столбца 1 DataGrid
    ....
  • заголовок последнего столбца DataGrid
  • ячейка в строке 0, столбец 0 в DataGrid
  • Ячейка в строке 0, столбец 1 DataGrid
    ....
  • Ячейка в строке 0, последний столбец DataGrid
    ....
  • Ячейка наконец Ряд, последний столбец DataGrid
  • Кнопка редактирования
  • Кнопка добавления
  • Кнопка удаления
  • Вернуться к началу

Порядок Я хочу это:

  • Кнопка конфигурации
  • DataGrid (одна остановка здесь, без фокусировки как таковой, но используйте кнопки со стрелками для выбора строк)
  • Кнопка редактирования
  • Добавить кнопку
  • Удалить кнопку
  • Вернуться к началу

Таким образом, вкладка только вводит и выходит из DataGrid, но не более. Кнопки со стрелками / страницами используются для перемещения в DataGrid.

За последние 2 дня я пробовал много вещей, в том числе установил для IsTabStop значение False для стиля заголовка, стиля ячейки и поиграл с KeyboardNavigationMode.TabNavigation

Есть идеи?

1 Ответ

0 голосов
/ 01 апреля 2020

Самый простой способ справиться с этим, вероятно, дать кнопке редактирования x:Name в разметке XAML и программно сфокусировать ее, обработав событие PreviewKeyDown для DataGrid:

private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Tab)
    {
        e.Handled = true;
        edit.Focus();
    }
}

XAML:

<Button x:Name="edit" Grid.Row="2" Height="20" Width="50" Content="Edit" FontSize="11"               
        Background="{StaticResource DefButtonBackgroundBrush}"/>

Если вы определяете пользовательские элементы в заголовках, вы должны установить для свойства IsTabStop их значение false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...