我正在使用WPF数据网格,只有我所拥有的修改是:
<toolkit:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
</toolkit:DataGridTextColumn.ElementStyle>
我有这个修改,所以如果单元格内容较长,它们会拉伸行高,不会隐藏任何文本。 问题在于DataGrid的滚动行为 - 它在滚动时会跳转整行,如果行高于一行,则滚动条完全无效 - 滚动条在滚动时抖动等。
有没有办法让WPF DataGrid“平滑”滚动而不是逐行滚动?
由于
答案 0 :(得分:31)
DataGrid
有一个附加属性ScrollViewer.CanContentScroll
,用于管理此行为。要获得平滑滚动,您需要将其设置为False
。
答案 1 :(得分:28)
答案 2 :(得分:8)
使用此:
<DataGrid VirtualizingPanel.ScrollUnit="Pixel">
请勿使用CanContentScroll="False"
。它禁用虚拟化,当您有很多行时,这可能导致较长的加载时间。虚拟化意味着它只会渲染显示的数据,而不渲染数据网格的所有数据。
但是,如果您没有太多的行,则禁用虚拟化可能会有所帮助,但是每一行创建起来都很复杂(每一行都有复杂的数据模板/控件,大量数据等)。
答案 3 :(得分:-1)
<DataGrid Grid.Row="1"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserSortColumns="False"
SelectionUnit="FullRow"
HeadersVisibility="None"
Name="grd"
GridLinesVisibility="None"
ItemsSource="{Binding}"
AutoGenerateColumns="False"
ScrollViewer.CanContentScroll="False">
</DataGrid>