私はMVVMの誰かにダイアログを実装する方法について尋ねられたこのスレッドを読むために私をお勧め:ビューモデルでMessageBoxはMVVMアプリケーションでは推奨されていませんか?
MVVM, DialogService and Dialog Result
を、ダイアログはこのように呼ばれている:
var dialog = new DialogViewmodel();
var result = _dialogservice.ShowDialog("My Dialog", dialog);
if(result.HasValue && result.Value)
{
//accept true
}
else
{
//Cancel or false
}
しかし、これは、このようにmessageBoxを使うこととは違うのですか?
DialogResult result = MessageBox.Show("Hello");
if(result == DialgoResult-OK)
{
//accept true
}
else
{
//Cancel or false
}
この2番目のケースでは、カスタムダイアログの代わりにMessageBoxを使用しているため、違いはありません。
とにかく、多くの場合、MVVMアプリケーションでMessageBoxを使用することを読んだことがありますが、MVVMパターンが壊れてしまうため、悪い考えです。しかし、実際にこれが真実であれば、私は最初の解決策がMVVMパターンを壊さず、2番目の解決策がそれを打破する方法を見ていません。
すべてのメッセージボックスは、ユーザーを中断するため、U/Xデザインエラーです。 –
しかし、MVVMとソフトウェアアーキテクチャのコンテキストでは、依存関係とテスト容易性の観点から見てみてください。 MessagBoxを直接呼び出すVMは、テストするのがずっと難しくなります。 –
ダイアログボックスで行ったのとまったく同じ方法で 'MessageBox'sを扱う' IAlertService'を作成してみませんか? – MickyD