現在、Windows Phone アプリを開発しています。私はMVVMとその利点についてかなり知っています。そのため、UI ロジックをビジネス ロジックから分離するように最善を尽くしています。しかし、私はこれに困惑しています。
ViewModel に Command があり、UI が xaml を介してこのコマンドにバインドされているとします。したがって、実行関数を呼び出すことはありません。このコマンドが実際に例外をスローできるとします。これをキャッチして通知を表示したい。頭に浮かんだのは次のことです。
- 何か問題が発生したときに通知できるように、インターフェイスをコマンドに渡します。このインターフェイスを実装するクラスは、メッセージ ボックスを表示するロジックを保持できます。これは正常に機能しますが、アプリのグローバリゼーション/ローカリゼーションが壊れます。エラー メッセージを AppResources.resx ファイルに保存して、既定の言語が変更されたときに適切なエラー メッセージが選択されるようにします。ビューモデルにあるコマンドに追加するとテストできないため、コマンドから AppResources を呼び出したくありません
- try catch を使用してコード ビハインドからコマンドを呼び出すと、例外に基づいて MessageBox を直接表示できます。
どちらのソリューションにもあまり満足していません。UI にバインドされているコマンドの例外を処理する良い方法はありますか? DispatchedUnhandledException を見ましたが、ドメイン固有になるのでしょうか? ユーザーに通知するために、すべての例外を 1 か所でキャッチする必要はありません。適切なビューでそれを処理したい。ありがとう!