CollectionView

时间:2016-04-08 16:32:25

标签: c# wpf xaml datagrid grouping

我试图找到一种在CollectionViewSource中对组进行排序的方法,并将它们与XAML DataGrid中的未分组项一起显示。我当前正在从ObservableCollection创建CVS并分配分组描述,这是集合中对象的属性。

我知道我可以将它们分类为升序/降序,但我感兴趣的是能够重新排列DataGrid,因为它是具有分组功能的媒体播放列表。

关于这应该如何运作的任何想法都将非常感激。

更新:ListCollectionView.CustomSort公开了一个IComparer接口来对项目进行排序,但是如何将它连接到它的位置呢?

当前代码:

  

视图模型

 ObservableCollection<PlaylistItem> Playlist { get; set; }
 CollectionViewSource CVS { get; set; }
 //
 Playlist = new ObservableCollection<PlaylistItem>();
 CVS = new CollectionViewSource{ Source = Playlist };
 CVS.GroupDescriptions.Add(new PropertyGroupDescription("Group"));
 CVS.IsLiveGroupingRequested = true;
  

查看

 <DataGrid ItemsSource="{Binding CVS.View}">
    <DataGrid.GroupStyle>
        <GroupStyle>
            <GroupStyle.ContainerStyle>
                <Style TargetType="{x:Type GroupItem}">
                    <Style.Resources>
                        <ControlTemplate x:Key="MultiItemGroupTemplate" TargetType="{x:Type GroupItem}">
                            <Expander IsExpanded="False" BorderThickness="0" BorderBrush="White" Background="White">
                                <Expander.Header>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock Text="{Binding Path=Name}" />
                                        <TextBlock Text="{Binding Path=ItemCount}" />
                                    </StackPanel>
                                </Expander.Header>
                                <ItemsPresenter />
                            </Expander>
                        </ControlTemplate>
                        <ControlTemplate x:Key="SingleItemGroupTemplate" TargetType="{x:Type GroupItem}">
                            <ItemsPresenter />
                        </ControlTemplate>
                    </Style.Resources>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Name}" Value="">
                            <Setter Property="Template" Value="{StaticResource SingleItemGroupTemplate}" />
                        </DataTrigger>
                    </Style.Triggers>
                    <Setter Property="Template" Value="{StaticResource MultiItemGroupTemplate}"/>
                </Style>
            </GroupStyle.ContainerStyle>

            <GroupStyle.Panel>
                <ItemsPanelTemplate>
                    <DataGridRowsPresenter/>
                </ItemsPanelTemplate>
            </GroupStyle.Panel>
        </GroupStyle>
    </DataGrid.GroupStyle>
 </DataGrid>

0 个答案:

没有答案