0

私の目標は、ViewModel が View に MessageBox を表示してユーザーに質問するように指示できるようにすることでした。

ViewModel に Windows 固有のコードへの参照を持たせたくありませんでした。

時間をかけて MVVM Light Toolkit をダウンロードしてインストールします。ツールキットを使用しても、MessageBoxButton や MessageBoxResult などを解決するには、ViewModel で System.Windows を参照する必要があることがわかりました。

System.Windows への参照を持つ ViewModel を取得したばかりなのに、なぜこの余分な作業をすべて行う必要があるのでしょうか。ViewModel から MessageBox.Show() を直接呼び出すこともできます。基本的に、MVVM ツールキットを使用して何も保存していないため、これを使用する理由がわかりません。

ViewModel で System.Windows を参照する必要があるのに、なぜこの作業を行うのか、誰か説明してもらえますか?

ありがとう、ヒュー

4

3 に答える 3

0

mvvm ライト ツールキットは、mvvm パターンを実装するのに役立ちます。mvvm ライト ツールキットには、ブレンド可能であるという非常に優れた利点もあります (Expression Blend を使用して非常に簡単に設計できるように、いくつかの調整が行われています)。ビューをテストするのは難しいが、viewModel をテストする方がはるかに簡単であるため、Mvvm パターンは (他の人が言ったように) アプリケーションのテストにも本当に役立ちます。

この取り組みを行って mvvm light を使用する理由を知りたい場合は、この関連する回答を確認することをお勧めします

それが役に立てば幸いです。幸運を祈ります!

于 2011-08-09T21:13:11.350 に答える
0

MessageBox クラスを使用する場合、System.Windows.Forms.dll への参照が必要です。MVVM-Light では、この参照は必要ありません。

于 2010-07-01T07:27:45.077 に答える
0

ツールキットの目的を損なうものではありません。このツールキットは、モデルからビューを分離するための軽いフレームワークを提供します。これは、単体テストに非常に役立ちます。

彼らは列挙型を再利用したので、書き換える必要はありませんでした。UI 固有の列挙型を再利用するのは少し奇妙に思えますが、少なくともそれらはイベント ハンドラーやイベント引数ではありません。

最後に、MVVM はICommandインターフェイスの実装を必要とするコマンドを使用します。そのインターフェースはPresentationCoreにあり、さらにUI固有です:)

全体として、目的は参照を削除することではなく、それらの参照を可能な限り使用しないことであり、列挙型は間違いなくパターンを壊しません。

于 2011-03-02T02:04:33.100 に答える