【发布时间】:2016-11-29 10:17:59
【问题描述】:
ImageAlbums 是 ICollectionView 类型,GlobalCollection.MyImageAlubms 是 ObservableCollection<T> 类型。
ImageAlbums = CollectionViewSource.GetDefaultView(GlobalCollection.MyImageAlubms);
ImageAlbums.Filter = new Predicate<object>(this.FilterImageAlbumList);
在视图中,我使用 ImageAlbums 来显示过滤后的图像列表。我已经使用FilterImageAlbumList 方法过滤了列表。问题是我在另一个地方使用了GlobalCollection.MyImageAlubms。在该视图中,我直接将 GlobalCollection.MyImageAlubms 用作源,但其中的列表也显示为已过滤。我这里也提供了过滤方法,下面的代码代表过滤方法
private bool FilterImageAlbumList(object item)
{
AlbumModel albumMoel = (AlbumModel)item;
if(LOGIC_OF_FILTERING)
{
return false;
}
return true;
}
有没有办法只过滤ImageAlbums 而不会影响 GlobalCollection。仅供参考 - 我不会深度复制全局集合。
【问题讨论】:
-
由于 item 是一个对象,您可以测试类型。每个类都有不同的类型枚举。
-
您可以使用
new CollectionViewSource { Source = GlobalCollection.MyImageAlubms}.View;创建一个新视图,但是我在过去发现了这个错误 (stackoverflow.com/questions/37166747/…),最后只是创建了副本... -
@Joe,如果你发现这个问题,你为什么要推荐这个?
-
@lukai 这就是为什么我把它作为评论而不是答案。只是给出选择。其他人可能会在不知道它的错误的情况下建议它作为答案。
-
@Joem 谢谢。不过已经得到了解决方案。
标签: c# wpf xaml icollectionview