【发布时间】:2020-09-27 16:00:32
【问题描述】:
我的Vehicle 模型中有两个属性:Category 和 Name。
我有一个名为 VehiclesView 的 ICollectionView。
当绑定到Category 时,ListView 显示:
Airplane
Helicopter
Helicopter
Airplane
Car
Car
我必须能够过滤 VehiclesView 以删除相同 Category 的重复项,这将导致:
Airplane
Car
Helicopter
要求:过滤逻辑必须使用FilterEventArgs,像这样:
public void ApplyFilter(object sender, FilterEventArgs e)
{
Vehicle v = e.Item as Vehicle;
if (v != null)
{
// Remove duplicate instances of Category
if (??????????????)
{
e.Accepted = false;
}
else
{
e.Accepted = true;
}
}
}
我只需要过滤逻辑方面的帮助。
非常感谢任何帮助。
编辑 1:“类别”是用户定义的,这意味着过滤器必须在运行时比较属性值并删除重复项。
编辑 2:添加了所有已执行研究的链接,其中没有一个提供我需要的过滤逻辑,但确实提供了其他类型的过滤逻辑以及如何实现过滤/排序/分组的“大图”。
https://weblogs.asp.net/monikadyrda/wpf-listcollectionview-for-sorting-filtering-and-grouping
http://wpftutorial.net/DataViews.html
C# - how to get distinct items from a Collection View
https://social.technet.microsoft.com/wiki/contents/articles/26673.wpf-collectionview-tips.aspx
http://www.abhisheksur.com/2010/08/woring-with-icollectionviewsource-in.html
Implementing a ListView Filter with Josh Smith's WPF MVVM Demo App
【问题讨论】:
-
是 WPF 吗? UWP?您使用的是哪个框架?另外,为什么要使用
FilterEventArgs? -
@CorentinPane 感谢您的回复。我正在使用带有 MVVM 的 WPF。 FilterEventArgs 最适合我需要的解决方案。我已将您提供的链接设为红色,但它没有提供解决方案,因为在我的情况下
Category是用户定义的。 -
@Andy 感谢安迪的回复。我已经阅读了那篇文章和其他几篇文章。他们提供了大局,这很棒,但他们没有解决我的问题。我只需要过滤逻辑来删除重复项。
标签: wpf mvvm filter duplicates icollectionview