我正在使用WPF数据网格,只有我所拥有的修改是:
<toolkit:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
</toolkit:DataGridTextColumn.ElementStyle>
Run Code Online (Sandbox Code Playgroud)
我有这个修改,所以如果单元格内容较长,它们会拉伸行高,不会隐藏任何文本.问题在于DataGrid的滚动行为 - 它在滚动时会跳过整行,如果行高于一行则完全不能正常工作 - 滚动条在滚动时抖动等等.
有没有办法让WPF DataGrid"顺利"滚动而不是逐行滚动?
谢谢
Bry*_*son 31
它DataGrid
有一个Attached属性ScrollViewer.CanContentScroll
,用于管理此行为.要获得平滑滚动,您需要将其设置为False
.
ero*_*ald 30
我没有明确地使用DataGrid,但事实上使用ScrollViewer.CanContentScroll=False
掉掉了ItemsPanelTemplate
使用VirtualizedStackPanel
带有常规的默认值StackPanel
.它将平滑滚动,但即使它不可见,它也将呈现每个项目.
如果您要处理复杂的可视化树或大型数据集,这绝对会破坏性能.
Ble*_*ose 12
用这个:
<DataGrid VirtualizingPanel.ScrollUnit="Pixel">
Run Code Online (Sandbox Code Playgroud)
不要使用CanContentScroll="False"
. 它禁用虚拟化,当您有很多行时,这可能会导致加载时间过长。虚拟化意味着它只会渲染显示的数据,而不是数据网格的所有数据。
但是,当您没有太多行时禁用虚拟化可能会有所帮助,但每行创建起来很复杂(复杂的数据模板/控件,每行中有大量数据等)。