ほとんどのWPFデータグリッドコントロールには、表示されたデータをフィルタリングする機能が組み込まれています。私はその機能を使用することに興味がありますが、データグリッドの使用を切断します。スタンドアロンWPFフィルタコントロール
私は、LINQクエリで使用することができますExpression<Func<T, bool>>
を返しますユーザーコントロールを見つけることを願っています。誰もそのようなユーザーコントロールを知っていますか? WPFで
ほとんどのWPFデータグリッドコントロールには、表示されたデータをフィルタリングする機能が組み込まれています。私はその機能を使用することに興味がありますが、データグリッドの使用を切断します。スタンドアロンWPFフィルタコントロール
私は、LINQクエリで使用することができますExpression<Func<T, bool>>
を返しますユーザーコントロールを見つけることを願っています。誰もそのようなユーザーコントロールを知っていますか? WPFで
は、コントロールに内蔵するためのフィルタリングはCollectionView
を用いて行われます。このCollectionView
は、コレクションコントロールのItemsSource
(ItemsControl
から派生したもの)として割り当てられます。
.NET 3.5 SP1では、CollectionView
クラスのfilterプロパティは、Predicate<object>
の代理人を受け取ります。 Predicate<object>
は本質的にFunc<object, bool>
と同じように見えますが、2つは直接互換性がありません。 Predicate<object>
デリゲートをラップするために、Func<object, bool>
デリゲートを簡単に作成することができます。
public static Func<object, bool> GetFuncFromPred(Predicate<object> pred)
{
return (obj => pred.Invoke(obj));
}
あなたはCollectionView
でフィルターにこれを呼び出し、その後、LINQクエリでそれらを使用することができます。
例:
List<object> list = GetList();
CollectionView colView = new CollectionView(list);
ListBox lb = GetListBox();
lb.ItemsSource = colView;
colView.Filter = GetFilter();
var filteredItems = list.Where(GetFuncFromPred(colView.Filter));
私は知りません。私たちは自分自身を構築しなければなりませんでした。
我々はCollectionViewSourceを使用し、デフォルトのフィルタだけでなく、カスタムフィルタでデフォルトを交換する機能が追加されました。
Bummer。私はそれが行く方法かもしれないと思っています。ジェネリックスとリフレクションを使用するコントロールを作成したり、クラスごとにハードコードされたフィルタを作成したりできましたか? – NoizWaves
Predicat
あなたはそれをしようとする場合があります:http://dotnetexplorer.blog.com/2011/04/07/wpf-itemscontrol-generic-staticreal-time-filter-custom-control-presentation/
これは、一般的な、ダイナミックな、完全なXAML宣言型のItemsControlフィルタユーザーコントロールです。それは
コンポーネントが盗ん、それはかなり良いパフォーマンスを提供していますので、オブジェクトの値を比較するために、プリコンパイル、リンク式を使用しています...などのデータグリッド、リストボックス、コンボボックスを、フィルタリングすることができます。
希望すると便利です。
しかも、あなたは(もXAMLで)、任意のフィルタリングロジックやC#のコードを書くジュストXAMLであなたのItemsControlを宣言し、任意のオブジェクトの任意のコレクションにバインド、宣言する必要はありません子供が入力コレクションとプロパティウィッヒにフィルタを適用して、ここに移動します。また、 "AND/OR"スイッチモード、 "!"オペランドを参照し、カスタム文字列形式またはコンバーターを参照して、オブジェクト値がUIにあるのと同じ方法で比較用に形式化されていることを確認できます。 – Bruno
おかげさまで、あなたの答えはちょっと離れていると思います。私は式を提供するWPFコントロールを探しています。 – NoizWaves
誰かがビルドしたカスタムのものがありますが、これを行うWPFコントロールは組み込まれていません。ごめんなさい。あなたが望むなら、あなたがこれをどうやってやれるか説明していました。 –