ViewModel の ListCollectionView にバインドされた ListView を使用して、MVVM デザイン パターンを使用しています。ListView のフィルター処理に使用するコンボボックスもいくつかあります。ユーザーがコンボボックスから項目を選択すると、ListView は選択された項目に対してフィルター処理されます。すでにフィルタリングされているものの上にフィルタリングしたいときはいつでも、前のフィルターが元に戻されます。フィルターを外す場合も同様です。1 つのコンボボックスのフィルターを削除すると、すべてのフィルターが削除され、元のリストが表示されます。同じ 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;
};
}
}