| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Datagrid の RowEditEnding イベントでは ItemSource に変更が反映されない対応」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
15行目: 15行目:
 
====強制的に反映====
 
====強制的に反映====
 
  private bool isManualEditCommit;
 
  private bool isManualEditCommit;
  private bool is[[R]]owCommited;
+
  private bool isRowCommited;
  private void datagrid_[[R]]owEditEnding(object sender, DataGrid[[R]]owEditEndingEventArgs e)
+
  private void datagrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
 
  {
 
  {
 
     if (!isManualEditCommit)
 
     if (!isManualEditCommit)
22行目: 22行目:
 
         isManualEditCommit = true;
 
         isManualEditCommit = true;
 
         DataGrid grid = (DataGrid)sender;
 
         DataGrid grid = (DataGrid)sender;
         grid.CommitEdit(DataGridEditingUnit.[[R]]ow, true);
+
         grid.CommitEdit(DataGridEditingUnit.Row, true);
         is[[R]]owCommited = true;
+
         isRowCommited = true;
 
         isManualEditCommit = false;
 
         isManualEditCommit = false;
 
     }
 
     }
     if (is[[R]]owCommited) {
+
     if (isRowCommited) {
 
         // データグリッドでの変更が反映されている
 
         // データグリッドでの変更が反映されている
 
         // 上記ブロックがないとこのタイミングでは反映されていない
 
         // 上記ブロックがないとこのタイミングでは反映されていない
         var item = e.[[R]]ow.Item as Hoge;
+
         var item = e.Row.Item as Hoge;
 
         Console.WriteLine(item.ToString());  // <- 反映済み
 
         Console.WriteLine(item.ToString());  // <- 反映済み
 
     }
 
     }
     is[[R]]owCommited = false;
+
     isRowCommited = false;
 
  }
 
  }

2022年5月19日 (木) 15:07時点における最新版

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;
}