さて、見積もり作成ソフトHiramituで、新しい見積もりを作成(DataView.AddNew)します。次のように、EndEditを呼んで置かないと、WPFのバインドに変更が伝わらない、という事が起こるようです。
private void m追加_Click(object sender, RoutedEventArgs e) {
if (T1 == null) return;
var form = new T見積INPUT();
var rec = T1.View.AddNew();
rec["作成日"] = DateTime.Today;
rec["有効期限"] = DateTime.Today.AddDays(14);
rec.EndEdit(); // <--- ここ!
App.ParentCenter(form);
form.T1 = T1;
cvsItems.View.MoveCurrentTo(rec);
if (form.ShowDialog() ?? false) {
rec.EndEdit();
}
else if (FConfirm.Show("新しいのん削除するよ?") ?? false) {
rec.Delete();
}
T1.Save1(rec);
}
DataRowViewを変更したのに、WPFへ変更が伝わらない。。。想像の範囲ですが、IsEditが関連すると思います。
例とは異なるコードですが、実験しました所、こういうことでした。
((DataRowView)tb.DataContext).BeginEdit();
((DataRowView)tb.DataContext)["Value"] = new Random().Next() + "";
((DataRowView)tb.DataContext).EndEdit(); // ← ここで変更が通知される
または、編集中でない場合、つまり、BeginEditとEndEditを省略した場合、ただちに通知されます。
((DataRowView)tb.DataContext)["Value"] = new Random().Next() + ""; // ← ここで通知される