さて、見積もり作成ソフト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() + ""; // ← ここで通知される
0 件のコメント:
コメントを投稿