トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

Datagrid の RowEditEnding イベントでは ItemSource に変更が反映されない対応



目次



記事一覧

キーワード

Datagrid の RowEditEnding イベントでは ItemSource に変更が反映されない対応

[WPF]


  • 反映されていてほしいところだが、反映されていないので、反映させる。

ItemSourceを設定

ObservableCollection<Hoge> hogeList;
          :
     hogeList の生成
          :
this.datagrid.ItemsSource = hogeList;

強制的に反映

private bool isManualEditCommit;
private bool isRowCommited;
private void datagrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
    if (!isManualEditCommit)
    {
        isManualEditCommit = true;
        DataGrid grid = (DataGrid)sender;
        grid.CommitEdit(DataGridEditingUnit.Row, true);
        isRowCommited = true;
        isManualEditCommit = false;
    }
    if (isRowCommited) {
        // データグリッドでの変更が反映されている
        // 上記ブロックがないとこのタイミングでは反映されていない
        var item = e.Row.Item as Hoge;
        Console.WriteLine(item.ToString());  // <- 反映済み
    }
    isRowCommited = false;
}
    



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.