「Datagrid の RowEditEnding イベントでは ItemSource に変更が反映されない対応」の版間の差分
ナビゲーションに移動
検索に移動
15行目: | 15行目: | ||
====強制的に反映==== | ====強制的に反映==== | ||
private bool isManualEditCommit; | private bool isManualEditCommit; | ||
− | private bool | + | private bool isRowCommited; |
− | private void | + | 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. | + | grid.CommitEdit(DataGridEditingUnit.Row, true); |
− | + | isRowCommited = true; | |
isManualEditCommit = false; | isManualEditCommit = false; | ||
} | } | ||
− | if ( | + | if (isRowCommited) { |
// データグリッドでの変更が反映されている | // データグリッドでの変更が反映されている | ||
// 上記ブロックがないとこのタイミングでは反映されていない | // 上記ブロックがないとこのタイミングでは反映されていない | ||
− | var item = e. | + | var item = e.Row.Item as Hoge; |
Console.WriteLine(item.ToString()); // <- 反映済み | Console.WriteLine(item.ToString()); // <- 反映済み | ||
} | } | ||
− | + | 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; }
© 2006 矢木浩人