Hi,
Can someone explain me why MahApps has this trigger in MetroDataGrid style (Controls.DataGrid.xaml)?
<Style.Triggers>
<Trigger Property="IsGrouping" Value="True">
<Setter Property="ScrollViewer.CanContentScroll" Value="False" />
</Trigger>
</Style.Triggers>
This is breaking virtualization when grouping is activated. From framework 4.5 I think virtualization is supported with grouping! (that said it was not the case before)
But even with framework 4.0 (where virtualization is not working when grouping activated), I don't understand what this trigger is doing.
Thanks for any help.
For now I have a style which overrides this trigger:
<Style TargetType="{x:Type DataGrid}" BasedOn="{StaticResource MetroDataGrid}">
<Setter Property="ScrollViewer.CanContentScroll" Value="True" />
<Style.Triggers>
<Trigger Property="IsGrouping" Value="True">
<Setter Property="ScrollViewer.CanContentScroll" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
@bplatypus I'll changes this in v2.0
I got a similar issue using Listview...virtualization does not work when i am using a collectionview aka grouping.
I tried to adapt bplatypus override but somehow it is not really working.
<Style TargetType="{x:Type ListView}" BasedOn="{StaticResource MetroListView}">
<Setter Property="ScrollViewer.CanContentScroll" Value="True" />
<Style.Triggers>
<Trigger Property="IsGrouping" Value="True">
<Setter Property="ScrollViewer.CanContentScroll" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
<ListView
x:Name="ListView_DownloadItems"
Style="{StaticResource VirtualisedMetroListView}"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
MinHeight="250"
dng:DropBehavior.PreviewDropCommand="{Binding PreviewDropCommand}"
ItemsSource="{Binding DownloadItems}"
PreviewKeyUp="OnGridKeyUp"
SelectionMode="Extended"
BorderThickness="0,0,0,0"
Margin="6,0">
Private Sub CreateView()
view = DirectCast(CollectionViewSource.GetDefaultView(DownloadItems), CollectionView)
Dim groupDescription As PropertyGroupDescription
groupDescription = New PropertyGroupDescription("GroupDescriptionIdentifier")
view.GroupDescriptions.Add(groupDescription)
groupDescription = New PropertyGroupDescription("PackageName")
view.GroupDescriptions.Add(groupDescription)
If _settings.InstantVideo = True Then
view.SortDescriptions.Add(New SortDescription("RequiredForInstantVideo", ListSortDirection.Descending))
End If
End Sub
Any idea?
Hi, suddenly found that if u make grouping in xaml on DataGrid, then Virtualisation can be enabled by setting
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.IsContainerVirtualizable="True"
VirtualizingPanel.ScrollUnit="Item"
ScrollViewer.CanContentScroll ="True"
in DataGrid.
Most helpful comment
Hi, suddenly found that if u make grouping in xaml on DataGrid, then Virtualisation can be enabled by setting
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.IsContainerVirtualizable="True"
VirtualizingPanel.ScrollUnit="Item"
ScrollViewer.CanContentScroll ="True"
in DataGrid.