WPF DataGrid的平滑滚动

时间:2010-02-20 18:10:44

标签: wpf datagrid scroll

我正在使用WPF数据网格,只有我所拥有的修改是:

    <toolkit:DataGridTextColumn.ElementStyle>
       <Style TargetType="TextBlock">
       <Setter Property="TextWrapping" Value="Wrap"/>
      </Style>
    </toolkit:DataGridTextColumn.ElementStyle>

我有这个修改,所以如果单元格内容较长,它们会拉伸行高,不会隐藏任何文本。 问题在于DataGrid的滚动行为 - 它在滚动时会跳转整行,如果行高于一行,则滚动条完全无效 - 滚动条在滚动时抖动等。

有没有办法让WPF DataGrid“平滑”滚动而不是逐行滚动?

由于

4 个答案:

答案 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>