我有一个使用了一段时间的 WPF DataGrid,它工作得很好。与这里的其他海报不同,我还没有遇到滚动条或鼠标滚轮的问题。我已经CTRLEND编程到 DataGrid 的末尾,然后它会跟踪最近添加的项目。我可以用 键向上滚动浏览DataGrid
内容up。
但是,我对down钥匙的行为真的很奇怪!如果我从顶部开始DataGrid
并按住down键,它会滚动一点,然后最终在相邻的两行之间来回弹跳。如果 I pgdn,它将向下滚动更多,然后跳回到它会在其之间跳转的前两行的最顶部,然后向下滚动到我想要的位置pgdn。如果我再向下翻页,down键将滚动到最后。如果我走到顶部DataGrid
并重新开始,我会一遍又一遍地得到完全相同的行为。
我还没有找到解决这个问题的帖子,而且我在DataGrid
文档中也没有看到任何有帮助的东西。
它只是一个三列DataGrid
,每列显示TextBlock
s。谁能解释为什么只有这一种滚动模式有问题?这是 XAML:
<DataGrid ItemsSource="{Binding MainLog}" AutoGenerateColumns="False"
Name="log_datagrid" SelectedCellsChanged="log_datagrid_SelectedCellsChanged"
KeyUp="datagrid_KeyUp" LoadingRow="log_datagrid_LoadingRow">
<DataGrid.Columns>
<!-- timestamp -->
<DataGridTemplateColumn Header="Timestamp">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Timestamp}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- level -->
<DataGridTemplateColumn Header="Level">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Level}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- error message -->
<DataGridTemplateColumn Header="Message">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Message}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
顺便说一句,即使我的所有事件处理程序的代码隐藏都被注释掉了,这种行为也会发生。
这是我的 MainLog 集合包含的结构的定义:
public struct MainLogData
{
public string Timestamp { get; set; }
public string Level { get; set; }
public string Message { get; set; }
}