Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DataGrid virtualization broken when grouping activated #3040

Closed
bplatypus opened this issue Sep 7, 2017 · 3 comments · Fixed by #3483
Closed

DataGrid virtualization broken when grouping activated #3040

bplatypus opened this issue Sep 7, 2017 · 3 comments · Fixed by #3483
Assignees
Milestone

Comments

@bplatypus
Copy link

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>

Environment

  • MahApps.Metro 1.5.0
  • Windows OS 10
  • Visual Studio 2017
  • .NET Framework 4.6.2
@punker76 punker76 added this to the 2.0.0 milestone Sep 8, 2017
@punker76 punker76 self-assigned this Sep 8, 2017
@punker76
Copy link
Member

punker76 commented Sep 9, 2017

@bplatypus I'll changes this in v2.0

@n0ix
Copy link

n0ix commented Feb 16, 2018

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?

@dayDragon
Copy link

dayDragon commented Feb 21, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging a pull request may close this issue.

4 participants