我有一段WPF DataGrid,我已经使用了一段时间,它的效果很好。不同于这里的其他海报,我还没有与滚动条或鼠标滚轮(还)的问题。我有CTRLEND编程到DataGrid的末尾,然后跟踪最近添加的项目。我可以通过以上的键向上滚动浏览DataGrid
内容。WPF DataGrid滚动向下箭头键奇怪行为
但是,我真的很奇怪的行为与下降关键!如果我从DataGrid
的顶部开始并按住下一个键,它会滚动一下,然后最终在两个相邻行之间来回跳动。如果我将它向下滚动更多,然后跳回到它将在其之间跳转的前两行的最上面,然后向下滚动到我要去的点。如果我再往下看,下降键将滚动到结尾。如果我进入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; }
}
我得到奇怪的行为也当使用WPF和网格,甚至到了Visual Studio的崩溃导致它运行的内存点,大概增加了一些更多的RAM将会帮助你 – JohnnBlade
添加更多的内存是永远的解决方案来解决内存异常。 ;)也许你的datagrid单元格正在使用需要'Dispose'd的对象。 – Dave
您的MainLog集合中的类是否具有Equals方法的自定义实现? –