ImageAlbums是ICollectionView类型,GlobalCollection.MyImageAlubms是ObservableCollection<T>类型。
ImageAlbums = CollectionViewSource.GetDefaultView(GlobalCollection.MyImageAlubms);
ImageAlbums.Filter = new Predicate<object>(this.FilterImageAlbumList);在视图中,我使用ImageAlbums显示经过过滤的图像列表。我已经使用FilterImageAlbumList方法过滤了列表。问题是我在另一个地方使用了GlobalCollection.MyImageAlubms。在这个视图中,我直接使用GlobalCollection.MyImageAlubms作为源,但是在那里,列表也显示为过滤。我在这里还提供了filter方法,下面的代码表示filter方法
private bool FilterImageAlbumList(object item)
{
AlbumModel albumMoel = (AlbumModel)item;
if(LOGIC_OF_FILTERING)
{
return false;
}
return true;
}是否有任何方法只过滤ImageAlbums而不影响GlobalCollection。我不会复制全球收藏的。
发布于 2016-11-29 10:48:13
你的问题是由以下两个事实引起的:
CollectionViewSource.GetDefaultView总是为相同的参数返回相同的实例因此,如果在默认视图上设置了筛选器,则无论绑定到集合的位置,其效果都是可见的。
如果您想要一个单独的ICollectionView实例,最好的方法是手动实例化它。对于ObservableCollection<T>来说,一个很好的选择是ListCollectionView。因此,这应该可以解决您的问题:
ImageAlbums = new ListCollectionView(GlobalCollection.MyImageAlubms);https://stackoverflow.com/questions/40863270
复制相似问题