我正在使用 MVVM 设计模式,ListView 绑定到 ViewModel 上的 ListCollectionView。我还有几个用于过滤 ListView 的组合框。当用户从组合框中选择一个项目时,ListView 将针对所选项目进行筛选。每当我想在已过滤的内容之上进行过滤时,它都会撤消我以前的过滤器,就像它从未发生过一样。移除过滤器也是如此。删除一个组合框的过滤器会删除所有过滤器并显示原始列表。是否可以在同一个 ListCollectionView 上有多个单独的过滤器?
我做错了什么,还是根本不支持?您可以在此处找到我的应用程序的屏幕截图,以了解我想要完成的工作。这是我的过滤代码...
/// <summary>
/// Filter the list
/// </summary>
/// <param name="filter">Criteria and Item to filter the list</param>
[MediatorMessageSink("FilterList", ParameterType = typeof(FilterItem))]
public void FilterList(FilterItem filter)
{
// Make sure the list can be filtered...
if (Products.CanFilter)
{
// Now filter the list
Products.Filter = delegate(object obj)
{
Product product = obj as Product;
// Make sure there is an object
if (product != null)
{
bool isFiltered = false;
switch (filter.FilterItemName)
{
case "Category":
isFiltered = (product.Category.IndexOf(filter.Criteria, StringComparison.CurrentCultureIgnoreCase)) != -1 ? true : false;
break;
case "ClothingType":
isFiltered = (product.ClothingType.IndexOf(filter.Criteria, StringComparison.CurrentCultureIgnoreCase)) != -1 ? true : false;
break;
case "ProductName":
isFiltered = (product.ProductName.IndexOf(filter.Criteria, StringComparison.CurrentCultureIgnoreCase)) != -1 ? true : false;
break;
default:
break;
}
return isFiltered;
}
else
return false;
};
}
}