バインディング

Yuya Yamaki’s blog
八巻さんのブログを読んでWPFにはMODEL-VIEW-VIEWMODEL(MVVM)パターンが有効だと知った。画面と処理が完全に分離されている。MVVMってのはWPFに限った呼び方なのかしらと考えつつウロウロしていると・・・
Part 1. 双方向データバインドの基本的な使い方
Part 2. スマートクライアントにおける単体入力データ検証
上記のエントリを発見。データ提供がサービスというシナリオかもしれないが、多分似たようなことだと思う。というわけ日頃の業務に多いDBを相手にしたシナリオで作ってみた。
題材は単純な売上入力画面。売上伝票がヘッダとなり売上明細を集約する。IDataErrorInfoとINotifyPropertyChangedを実装した抽象クラスを作り、それの具象クラスをデータソースとしてバインドさせる。いい感じで進んでいたがつまづいた。登録済み伝票の修正時、明細の削除を考慮した更新ができない。更新したい場合RowStateが無いので削除された行は保持されていない。解決方法(というよりは回避方法)としては更新時に古い明細を全削除、新しい明細を全追加で事は済んでしまうかもしれないが、データ提供元がサービスで一括更新を依頼する場合この部分はどうやって解決したらいいんだろう。