このかなり単純なことに困惑しているとは信じられません。私はもともとこれを WPF データグリッド コードプレックス ディスカッションに投稿しましたが、応答がありませんでした。だから私はここで試しています:
これを行う方法が見つからないようです。データコンテキストが最初にテーブルの行で満たされているデータグリッドを作成します。条件に基づいていくつかの行を返す検索機能を実装しました。これらの行のみを表示したい場合、最初に作成されたデータ コンテキストを破棄し、新しくフィルター処理されたコレクションを追加するにはどうすればよいでしょうか?
私は素朴に次のように始めました:
(Late Edit: ここに Generics コードを入力できないようです -- 次の行のキャストは、datagrid.Items を MyType にキャストするためにサポートされています (たとえば))
IEnumerable 行 = datagrid.Items.Cast();
IEnumerablefilteredRows = 行.Where(行 => 行.someCondition == true);
データグリッドにfilteredRowsのみを表示させるにはどうすればよいですか? ただやっている:
datagrid.DataContext = null;
datagrid.DataContext =filteredRows;
動作しません(何らかの理由で愚かなにおいさえします)。
また、逆のことを行う必要があります(これが機能したら)。一部のボタンクリックにより、ユーザーは検索結果を「クリア」し、DataContext を「行」に再プラグインできるようにする必要があります (上記のスニペット)。
私は何が欠けていますか?