Плавная прокрутка для WPF DataGrid - PullRequest
21 голосов
/ 20 февраля 2010

Я использую сетку данных WPF, единственная имеющаяся у меня модификация:

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

У меня есть эта модификация, поэтому, если содержимое ячеек длиннее, они растягивают высоту строки, текст не скрывается. Проблема заключается в поведении прокрутки DataGrid - при прокрутке он пересекает целые строки, что не очень хорошо работает, если строка превышает одну строку - полоса прокрутки дергается при прокрутке и т. Д.

Можно ли сделать так, чтобы WPF DataGrid прокручивался "плавно", а не построчно?

Спасибо

Ответы [ 3 ]

31 голосов
/ 21 февраля 2010

DataGrid имеет свойство Attached, ScrollViewer.CanContentScroll, которое управляет этим поведением. Чтобы получить плавную прокрутку, вам нужно установить False.

28 голосов
/ 24 июля 2010

Я не играл с DataGrid в явном виде, но на самом деле использование ScrollViewer.CanContentScroll=False заменяет ItemsPanelTemplate по умолчанию, которое использует VirtualizedStackPanel с обычным StackPanel. Он будет плавно прокручиваться, но будет рендерить каждый элемент, даже если он не виден.

Это может абсолютно убить производительность, если вы имеете дело либо со сложным визуальным деревом, либо с большими наборами данных.

0 голосов
/ 25 мая 2013
  <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>
...