我有一个过滤器,用于过滤掉1.4.0
中的项目,以便只在我的数据网格中显示集合中的某些项目。 OC被称为 MyTruckCollection 。
我可以过滤掉结果的唯一方法是删除我不想要的项目,只添加我想要的项目。 (我无法隐藏集合中的某些项目)
示例:
ObservableCollection
现在我的问题是我不想从列表中删除我不想要的项目,因为当我添加另一个过滤器时,该集合仅包含前一个过滤器添加的项目。因此,对于我添加的每个过滤器,我的集合中的项目列表越来越小。
所以问题是:有没有办法过滤掉我的OC中的某些项目而不删除它们并仍然更新我的datagrid的UI。
我也可以这样做:
var filteredList = MyTruckCollection.Where(x => x.TruckStatus == filterValue).ToList();
MyTruckCollection.Clear();
foreach (var filteredItem in filteredList)
MyTruckCollection.Add(filteredItem);
但是如果我想对它应用 Sorting 函数并且UI没有得到更新,那么我将失去对我的集合的访问权限。我对MVVM不太了解并且对它不太了解,所以如果有人可以帮助我吗?
答案 0 :(得分:2)
您可以使用ICollectionView界面进行过滤/排序任务。会是这样的
ICollectionView MyTruckCollectionView= CollectionViewSource.GetDefaultView(MyTruckCollection);
MyTruckCollectionView.Filter = o => ((Truck)o).TruckStatus==filterValue
MyTruckCollectionView.SortDescriptions.Add(new SortDescription("field", ListSortDirection.Ascending));
....
答案 1 :(得分:0)
您可以将MyTruckCollection设置为get-only属性,该属性在通过包含所有值的私有myTruckCollection调用时应用活动过滤器。