Подтвердить что ты не робот

Плавная прокрутка для WPF DataGrid

Я использую WPat datagrid, только модификация у меня есть:

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

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

Есть ли способ заставить WPF DataGrid прокручиваться "плавно", а не строка за строкой?

Спасибо

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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