Data binding windows 8 metro应用程序集合ViewSource数据绑定问题

Data binding windows 8 metro应用程序集合ViewSource数据绑定问题,data-binding,gridview,windows-8,windows-runtime,winrt-xaml,Data Binding,Gridview,Windows 8,Windows Runtime,Winrt Xaml,我有一个collectionviewsource <CollectionViewSource x:Name="groupedItemsViewSource" ItemsPath="Items" /> 源在代码隐藏文件中设置: groupedItemsViewSource.Source = AllGroups; 所有团体都是 public ObservableCollection<DataGroup> AllGrou

我有一个collectionviewsource

<CollectionViewSource x:Name="groupedItemsViewSource" 
                          ItemsPath="Items" />
源在代码隐藏文件中设置:

groupedItemsViewSource.Source = AllGroups;
所有团体都是

public ObservableCollection<DataGroup> AllGroups
公共可观测集合所有组
其中数据组包含可观察的项集合

 public ObservableCollection<DataItem> Items
公共可观察收集项目
问题是,它不显示带有项的组,相反,我只得到3个gridviewitems,它们对应于AllGroups中的3个数据组


我尝试添加IsSourceGroupped=“true”,但当我添加时,应用程序崩溃,出现一个窗口,显示“myapp.exe[3192]中发生未处理的win32异常”

CollectionViewSource中的Source属性应实现IGrouping接口,否则这些组将无法在GridView或ListView中工作。
使用Linq expression GroupBy将结果分组到具有指定键的组中,或者可以如下扩展ObservableCollection类:

public类GroupedObservableCollection:ObservableCollection,iGroup
{
/// 
///键作为组标识符。
/// 
公共字符串密钥{get;set;}
}
并在类中使用它(我在ViewModel中有CollectionViewSource,而不是在XAML中):

public GroupedObservableCollection项
groupedItemsViewSource=newcollectionviewsource{Source=AllGroups,ItemsPath=newpropertypath(“Items”),issourcegroup=true};
这样绑定就可以工作了。还要确保在ListView和GridView中使用正确的绑定:



看起来您所缺少的只是CollectionViewSource上的IsSourceGrouped=“true”属性。

当我添加此属性时,它崩溃了,我得到了“myapp.exe[3192]中发生了未处理的win32异常”。正如您所说,我实现了GroupedObservableCollection,但每当我添加IsSourceGrouped=true时,应用程序都会崩溃。如果我删除issourcegrouped,它会运行,但我再次看到3个DataGroups的3个项您是否在每个DataGroup对象中设置了不同的Key属性?此外,所有组和项目都是属性,而不是字段?所有组和项目都是属性。键属性很好,但此时allgroups为空,我从一个源获取数据,当我将第一个数据组添加到allgroups时,如果我的issourcegrouped=true,它将崩溃。我删除了它,放置了一个断点,我看到所有的组都有数据,但是在UI中绑定仍然是错误的。另外,当我将groupedItemsViewSource.View设置为datagrid的源时,我什么也看不到。如果我单独设置groupedItemsViewSource,那么我就错了3项
 public ObservableCollection<DataItem> Items