2

このかなり単純なことに困惑しているとは信じられません。私はもともとこれを WPF データグリッド コードプレックス ディスカッションに投稿しましたが、応答がありませんでした。だから私はここで試しています:

これを行う方法が見つからないようです。データコンテキストが最初にテーブルの行で満たされているデータグリッドを作成します。条件に基づいていくつかの行を返す検索機能を実装しました。これらの行のみを表示したい場合、最初に作成されたデータ コンテキストを破棄し、新しくフィルター処理されたコレクションを追加するにはどうすればよいでしょうか?

私は素朴に次のように始めました:

(Late Edit: ここに Generics コードを入力できないようです -- 次の行のキャストは、datagrid.Items を MyType にキャストするためにサポートされています (たとえば))

IEnumerable 行 = datagrid.Items.Cast();

IEnumerablefilteredRows = 行.Where(行 => 行.someCondition == true);

データグリッドにfilteredRowsのみを表示させるにはどうすればよいですか? ただやっている:

datagrid.DataContext = null;

datagrid.DataContext =filteredRows;

動作しません(何らかの理由で愚かなにおいさえします)。

また、逆のことを行う必要があります(これが機能したら)。一部のボタンクリックにより、ユーザーは検索結果を「クリア」し、DataContext を「行」に再プラグインできるようにする必要があります (上記のスニペット)。

私は何が欠けていますか?

4

4 に答える 4

3

同様の問題に遭遇しました。いくつかのスタイル値を変更した後、DataGrid にコンバーターを再適用する必要がありました。

私にとってこれはうまくいきました:

myGrid.Items.Refresh()

すべてのルールを再適用するように見えるので、うまくいくかもしれません。

于 2010-06-29T17:01:38.690 に答える
1

myGrid.Items.Refresh() も機能しました。前にコンテキストをリセットするだけです

public void GridExamsRefresh()
{
  grdExamenes.ItemsSource = (this.objPacienteOfContext).Exams;
  grdExamenes.Items.Refresh();
}
于 2011-02-08T14:56:58.867 に答える
0

この質問でも同様の問題が発生したようです。コメントの中で、彼はdatacontextをnullに設定してから、それを再割り当てしても機能しないとさえ言っています。

おそらく、その回答に記載されているように、アイテムコレクションを変更する必要がありますか?

于 2009-06-10T05:53:08.843 に答える
0

ItemsSource プロパティを設定しようとしましたか?

于 2009-07-21T17:30:00.977 に答える