Ответ 1
DataGrid
имеет свойство Attached, ScrollViewer.CanContentScroll
, которое управляет этим поведением. Чтобы получить плавную прокрутку, вам нужно установить его на False
.
Я использую WPat datagrid, только модификация у меня есть:
<toolkit:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
</toolkit:DataGridTextColumn.ElementStyle>
У меня есть эта модификация, поэтому, если содержимое ячейки больше, они растягивают высоту строки, текст не скрывается. Проблема заключается в том, что поведение прокрутки DataGrid - при прокрутке перетягивает целые строки, что не работает вообще, если строка выше одной строки - полоса прокрутки дергается при прокрутке и т.д.
Есть ли способ заставить WPF DataGrid прокручиваться "плавно", а не строка за строкой?
Спасибо
DataGrid
имеет свойство Attached, ScrollViewer.CanContentScroll
, которое управляет этим поведением. Чтобы получить плавную прокрутку, вам нужно установить его на False
.
Я не играл с DataGrid явно, но фактически, использование ScrollViewer.CanContentScroll=False
сворачивает по умолчанию ItemsPanelTemplate
, который использует VirtualizedStackPanel
с регулярным StackPanel
. Он будет прокручиваться плавно, но он будет отображать каждый элемент, даже если он не отображается.
Это может полностью убить производительность, если вы имеете дело с сложным визуальным деревом или большими наборами данных.
<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>