Page pagown таблицы данных Wpf с прокруткой, установленной на пиксель, и остановкой табуляции, установленной на false для ячеек - PullRequest
1 голос
/ 29 марта 2019

У меня есть таблица данных WPF, в которой у меня отключено табулирование ячеек, а блок прокрутки виртуализированной панели установлен на пиксель. Когда я нажимаю PgDn , выбранный элемент не изменяется, поэтому прокрутка вниз страницы не работает как стандартная.

Если для элемента прокрутки виртуализированной панели установить элемент «Стоп табуляции» на true, то прокрутка страницы вернется к норме.

Почему это так, и можно ли сохранить обе настройки при исправлении прокрутки страницы вниз?

<Window.Resources>
    <Style TargetType="DataGridCell">
        <Setter Property="IsTabStop" Value="False" />
    </Style>
</Window.Resources>
<Grid>
    <DataGrid ItemsSource="{Binding Items}"
              VirtualizingPanel.ScrollUnit="Pixel">
    </DataGrid>
</Grid>

1 Ответ

1 голос
/ 29 марта 2019

Если вы посмотрите на исходный код для DataGrid, вы увидите, что он обрабатывает событие KeyDown для клавиши PageDown определенным образом, только когда для ScrollUnit установлено значение Item: https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/DataGrid.cs,1e8d30484d9b09db,references

Поэтому, если вы хотите, чтобы это работало, вам придется создать подкласс класса DataGrid и переопределить метод OnKeyDown, чтобы обеспечить собственную настраиваемую функциональность PageDown. Вы можете «украсть» и изменить приватный метод OnPageUpOrDownKeyDown в соответствии с вашими требованиями.

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