我在C#应用程序(WPF,.NET 4.0)中为DataGrid
设置了当前的设置:
ItemsSource
绑定到我自己制作的集合。该集合为IList<Foo>
,是只读的,并在调用Foo
时即时生成this[int index]
对象。Foo
包含一个对象数组,我想为该数组中的每个项目添加一列。数组中的所有Foo
个对象在数组中具有相同数量的项。列总数很少超过5。int.MaxValue
行,因此我在集合中添加了代码,以获得常规LargeCount
的{{1}}和LargeOffset
属性属性基于,然后我可以使用它来翻阅数据。使用Count
行测试DataGrid
后,我发现滚动时控件非常缓慢。 int.MaxValue
快速显示数据的顶部(即第0行位于顶部)。但是,如果我通过单击滚动条中的某个位置进行快速滚动,DataGrid
会在显示新行之前挂起10秒以上。挂起时间与我单击滚动条的距离成正比。
从任何地方逐行滚动向下(通过滚动条的向下箭头按钮)很不错,但滚动向上逐行挂起一秒钟
我已将DataGrid
设置为在我的标记中具有以下属性,以确保虚拟化正常工作:
DataGrid
我在网上查了很多关于解决这个问题但没有看到任何有价值的东西。现在,我要将集合设置为最大ColumnWidth="200"
RowHeight="21"
CanUserResizeRows="False"
EnableColumnVirtualization="True"
ScrollViewer.IsDeferredScrollingEnabled="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingStackPanel.IsVirtualzing="True"
值,而不是Count
,但我希望有人可以帮助我让这个滚动工作更快,以便我的用户不必这么多分页。