C# Wpf datagrid pagedown,滚动设置为像素,单元格的制表位设置为false

C# Wpf datagrid pagedown,滚动设置为像素,单元格的制表位设置为false,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个WPF数据网格,我在单元格上禁用了制表符,虚拟化面板滚动单元设置为像素。当我按下PgDn时,所选项目不会更改,因此向下滚动页面不会作为标准工作 将虚拟化面板滚动单元的cell tab stop(单元选项卡停止)更改为true(为item)会使页面向下滚动恢复正常 为什么会这样?在修复页面向下滚动时,是否可以同时保持这两种设置 <Window.Resources> <Style TargetType="DataGridCell"> <S

我有一个WPF数据网格,我在单元格上禁用了制表符,虚拟化面板滚动单元设置为像素。当我按下PgDn时,所选项目不会更改,因此向下滚动页面不会作为标准工作

将虚拟化面板滚动单元的cell tab stop(单元选项卡停止)更改为true(为item)会使页面向下滚动恢复正常

为什么会这样?在修复页面向下滚动时,是否可以同时保持这两种设置

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

如果您查看
DataGrid
的源代码,您会发现只有当
ScrollUnit
设置为
项时,它才会以某种方式处理
PageDown
键的
KeyDown
事件:

因此,如果您想让它工作,您必须对
DataGrid
类进行子类化,并覆盖
OnKeyDown
方法,以提供您自己的自定义
PageDown
功能。您可以根据自己的要求“窃取”和修改private
OnPageUpOrDownKeyDown
方法