0

私はデータグリッドと1つのパネルを持っています。行をクリックすると、すべてのデータがそのパネルに表示されます。また、セルを編集し、編集後に同じ行の別のセルをクリックすると、パネルがすぐに更新されます。データグリッドはアイテム ソース (データ テーブル) を介してバインドされているため、グリッドを変更 (追加/削除/編集) すると、アイテム ソースが更新され、アイテム ソースごとにパネルが更新されます。

セル編集を実現するために、次のコードを使用していますが、機能しています。

void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
        if (!isManualEditCommit)
        {
            isManualEditCommit = true;
            DataGrid grid = (DataGrid)sender;
            grid.CommitEdit(DataGridEditingUnit.Row, true);
            isManualEditCommit = false;           
        }
    }

問題: 唯一の問題は、この行が呼び出されたとき (grid.CommitEdit)、基本的にすべての行を再度ロードすることです。データテーブルが非常に大きい場合、すべての行をロードするのに数秒かかります。グリッドをコミットしないと、別の行をクリックすると、データグリッドの変更がパネルに表示されます。行を再度ロードせずに同じ行の別のセルをクリックすると、それを実現したいと考えています。

ここに画像があります

ここに画像の説明を入力

助けてください

ありがとう

4

1 に答える 1

0

これは DataGrid の一般的な落とし穴です: コミット ロジックです。私が見つけた解決策 (数値ではなくブール値) は、独自のカスタム DataGridColumn を作成し、バインディング トリガーを PropertyChanged に設定して、コミット時だけでなくコンテンツを一度に更新することでした。確かにこれはちょっとした作業ですが、DataGrid の標準の列では、そのコミット ロジックを変更することはできません。

于 2012-06-05T16:43:57.800 に答える