MVVMで業務アプリを作成するときに困る典型なシナリオ

MVVMで業務アプリでよく出てくるシナリオでMVVMでどのように実装すれば良いか困るシナリオがあります。メッセージボックスの表示や画面遷移などがよく見かけますがこれ以外も案外あります。たとえば以下のシナリオです。

  1. コマンド処理時のカーソル状態制御
  2. フォーカス制御
  3. 入力項目検証の強制実行(全体・部分)
  4. 閉じる時の画面入力項目変更有無判定

1つめはコマンド実行中にカーソルを砂時計にして戻す処理。2つめは画面の状態に応じたカーソル制御です。ビヘイビアを作成することでなんとかできそうですが、個別実装していると大変になります。3つめは画面の全体および特定の部分領域に対して入力検証を行い入力エラー表示を行う処理です。汎用的なビヘイビアの作成はタフな作業で、さらに領域の概念をどのように表すかが悩みどころになります。最後はユーザが画面を閉じた時に入力項目が編集されていた場合、確認画面を表示する処理です。一見ViewModelでのIsDirtyの実装で対処可能なように見えますが、数値の入力項目に英字を入力された場合ViewModelへのデータ変更は通知されないため不十分です。

業務アプリではこれらの課題を効率よく対処できる仕組みを考える必要がありますがなかなか難しく、業務アプリをMVVMで作成しているチームはどのような対処をしているか知りたいところです。