MS AccessフィルターのようにDataGridアイテムをフィルター処理するにはどうすればよいですか(セルの一部をマウスで選択して[フィルター]ボタンを押すだけ)。
2つのコマンド(FilterとClearFilter)を備えたViewModel MyViewModelとObservableCollectionがあります。GetItems(...)メソッドを備えたモデルがあります。
DataGrid CellEditEndingイベントで、選択したパスと列名を保存します。
_selectedColumn = e.Column;
if (e.EditingElement is TextBox)
_selectedText = (e.EditingElement as TextBox).SelectedText;
したがって、2つのパラメーターがあります。並べ替えが必要なTオブジェクトのプロパティ名とフィルター値(どちらもtypeof String)です。
モデルのメソッドGetItemsを変更するにはどうすればよいですか?メソッドModel.GetItemwsはEntityFrameworkを使用して、データベースからアイテムをクエリします。このクエリにフィルタを適用するにはどうすればよいですか?また、このクエリを作成するにはどうすればよいですか?一部の動的LINQ /式
var items = EFQuery().**Where(myFilter)**.ToList();
このmyFilterをどこでどのように作成する必要がありますか?
次のようにフィルターラムダを書くことができます:
.Where(x => x.GetType().GetProperty(AA).GetValue(x).ToString().Contains(BB))
AAは、選択した列名を含む変数です。
BBは、フィルターテキストを含む変数です。
制限:プロパティAAは、ToStringメソッドをオーバーライドした文字列またはクラスである必要があります