我有一个ObservableCollection,它有许多MyParent对象,而这些对象又有自己的ObservableCollection of MyChild对象。现在,我想在网格视图中显示所有的MyChild对象,这自然要求一个扁平的集合。
CompositeCollection看起来很有前途。
Q:可以在CompositeCollection中包装任意数量的集合吗?
如果没有,还有其他选择吗?
发布于 2014-09-04 13:45:50
没有必要使用任何CompositeCollection来做您想做的事情。您可以在一个简单的MyChild查询中使用方法从所有MyParent对象中提取所有的LinQ对象。试试这个:
using System.Linq;
...
var children = YourParentCollection.SelectMany(i => i.MyChild).ToList();如果您不熟悉这些Enumerable扩展方法,那么一定要对它们进行研究。
发布于 2022-07-19 13:57:41
您可以编写这样的转换器:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var parent = value as IEnumerable<Parent>;
// Note: CompositeCollectionView not support grouping。
var compositeCollection = new CompositeCollection();
foreach (var child in parent)
{
var collectionContainer = new CollectionContainer {
Collection = child.SomeCollectionProperty;
};
compositeCollection.Add(collectionContainer);
}
return compositeCollection;
}https://stackoverflow.com/questions/25666987
复制相似问题