Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在datagrid上使用CollectionViewSource进行分组时出现的问题_C#_Wpf_Mvvm_Datagrid_Grouping - Fatal编程技术网

C# 在datagrid上使用CollectionViewSource进行分组时出现的问题

C# 在datagrid上使用CollectionViewSource进行分组时出现的问题,c#,wpf,mvvm,datagrid,grouping,C#,Wpf,Mvvm,Datagrid,Grouping,我尝试在datagrid中分组数据已有一段时间了,但运气不好。在我的ViewModel中,属性: publicobservableCollection竞争对手{get;}= 新的可观察集合(); 公共集合视图源竞争对手集合视图{get;}= 新建CollectionViewSource(); 在我的构造函数中: competitorscolectionview.Source=竞争对手; CompetitorsCollectionView.GroupDescriptions.Add( 新属性组描

我尝试在datagrid中分组数据已有一段时间了,但运气不好。在我的ViewModel中,属性:

publicobservableCollection竞争对手{get;}=
新的可观察集合();
公共集合视图源竞争对手集合视图{get;}=
新建CollectionViewSource();
在我的构造函数中:

competitorscolectionview.Source=竞争对手;
CompetitorsCollectionView.GroupDescriptions.Add(
新属性组描述(名称(CompetitorModel.Qualification));
最后,我的xaml中的datagrid:


我尝试过使用
ListCollectionView
s的各种方法,这些方法确实有效,但没有提供排序功能或有用的功能。也就是说,这就是我的工具使用
ListCollectionView
而不是
CollectionViewSource
时的外观:

如果有人能指出我错在哪里,我将非常感激,因为我无法用我的生命来解决这个问题。目前,我能找到的其他帖子都没有解决我的问题

编辑:我不知道这对解决问题是否重要,但在我的
App.xaml
中,我为我的datagrid分组定义了以下样式:


以下是我如何让它工作的,但我想知道是否还有其他方法

我创建了
ICollectionView
CompetitorCollection
属性,并将其绑定到
DataGrid itemsource

private ICollectionView _competitors;

public ICollectionView CompetitorCollection
 {
  get { return _competitors; }
 }
<Window.Resources>
      <CollectionViewSource x:Key="DQ" Source="{Binding Path=Competitors}">
          <CollectionViewSource.GroupDescriptions>
              <PropertyGroupDescription PropertyName="Qualification"/>
          </CollectionViewSource.GroupDescriptions>
      </CollectionViewSource>
</Window.Resources>
<DataGrid x:Name="Datagrid_Competition"
 ItemsSource="{Binding Source={StaticResource DQ}}"
 AutoGenerateColumns="False"
 Grid.Column="2"
 Grid.Row="3"
 HorizontalGridLinesBrush="DarkGray"
 VerticalGridLinesBrush="DarkGray"
 IsReadOnly="False"
 CanUserReorderColumns="False"
 CanUserResizeRows="False"
 CanUserResizeColumns="True"
 CanUserDeleteRows="True"
 CanUserAddRows="False">
在构造函数中

 _competitors = CollectionViewSource.GetDefaultView(Competitors);
_competitors.GroupDescriptions.Add(new PropertyGroupDescription(nameof(CompetitorModel.Qualification)));
CompetitorCollection
绑定为
DataGrid
项目源

<DataGrid x:Name="Datagrid_Competition"
 ItemsSource="{Binding CompetitorCollection}"
 AutoGenerateColumns="False"
 Grid.Column="2"
 Grid.Row="3"
 HorizontalGridLinesBrush="DarkGray"
 VerticalGridLinesBrush="DarkGray"
 IsReadOnly="False"
 CanUserReorderColumns="False"
 CanUserResizeRows="False"
 CanUserResizeColumns="True"
 CanUserDeleteRows="True"
 CanUserAddRows="False">
然后在
DataGrid
中添加我们刚刚创建为
ItemSource

private ICollectionView _competitors;

public ICollectionView CompetitorCollection
 {
  get { return _competitors; }
 }
<Window.Resources>
      <CollectionViewSource x:Key="DQ" Source="{Binding Path=Competitors}">
          <CollectionViewSource.GroupDescriptions>
              <PropertyGroupDescription PropertyName="Qualification"/>
          </CollectionViewSource.GroupDescriptions>
      </CollectionViewSource>
</Window.Resources>
<DataGrid x:Name="Datagrid_Competition"
 ItemsSource="{Binding Source={StaticResource DQ}}"
 AutoGenerateColumns="False"
 Grid.Column="2"
 Grid.Row="3"
 HorizontalGridLinesBrush="DarkGray"
 VerticalGridLinesBrush="DarkGray"
 IsReadOnly="False"
 CanUserReorderColumns="False"
 CanUserResizeRows="False"
 CanUserResizeColumns="True"
 CanUserDeleteRows="True"
 CanUserAddRows="False">


然后,在视图模型中,只有
竞争对手
(类型为
ObservableCollection
)必须存在。

参考这里的示例@LastStark,我尝试使用它作为参考,但由于某些原因,我无法使其工作。我想我不明白,所以这只会让问题更难解决。我明白了,你能把Competitor Model类展示给我看吗well@TheLastStark . 但是这里并没有任何东西应该引起这个问题。。奇怪,找不到任何东西,所以当使用
ListCollectionView
时,它工作正常?太棒了!这就成功了。我希望它能满足我今后的目标。应该是这样的,所以我将把它标记为解决方案!万分感谢!,您还可以从XAML设置
CollectionViewSource
,并将其绑定到源代码,如果您愿意,我稍后会将其添加到解决方案中。任何和所有解决方案都会很好