6

Model-View-ViewModel (MVVM) アプローチは、WPF UI 開発の最有力パターンのようです。私が読んだほとんどすべての記事は、それがベストプラクティスであることを暗示しています。RelayCommand または DelegateCommand の使用も多くの記事で目立っており、それらのいずれか (または他のバリエーション) を使用せずに MVVM を実装することはほとんど不可能のようです。では、なぜそれらは .NET 4 の一部ではないのでしょうか?

RelayCommand は実装が非常に簡単で、多くのサード パーティ ツールキットが既にそれを持っていることは知っていますが、Microsoft がいわゆる「ベスト プラクティス」の実装に非常に基本的で基本的なものを除外する理由を不思議に思っています。

4

3 に答える 3

2

Microsoft は MVVM ではなく WPF を処理するためです。

優れた MVVM アプリケーションに必要なすべてのコンポーネントを含む完全なツールキットが必要な場合は、Prism をご覧になることをお勧めします: A good tutorial here

基本的な理由は、Microsoft が "メインストリーム" の WPF 機能 (コントロールやバインディングの強化など) に重点を置いているためです。私が正しければ、MVVMはMVVM財団によって「監督」されています。

于 2011-06-24T14:31:17.140 に答える
1

ほとんどのものと同様に、それはお金に帰着し​​ます。単純なクラスかもしれませんが、.NET に含めるには多くの作業が必要です。単一のクラスは次の条件を満たす必要があります。

  1. リリース前に完全にテストされています。回帰テストは、将来のバージョンでも実装する必要があります。
  2. 複数の言語で完全に文書化されており、これも検証する必要があります。
  3. 名前の競合が発生するため、RelayCommand または DelegateCommand を使用すると、これらのクラスが既に存在する WPF が中断される可能性が高いため、名前を変更する必要があります。

これらのそれぞれには、予想以上に多くの作業が必要です (つまり、#2 には最初のドラフト、改訂、最終承認などがあります)。

ここに関連するリンクが見つかりました。

于 2011-06-24T14:50:47.597 に答える
0

これについての私の個人的な意見は、RelayCommands が MVVM の意図を破っているということです。

私の意見では、目的ごとに 1 つのコマンドを実装することは、各クラスが「単一の責任」を果たすため、RelayCommands を使用するよりも「ベスト プラクティス」です。コマンドは、それ自体の動作をカプセル化する必要があり、ビュー モデルに委譲するべきではありません。

RelayCommands のデバッグは、非常に多くの関数/アクション/デリゲートをステップ実行し、オブジェクトからオブジェクトにジャンプする必要がある場合、それほど単純ではなく、本当に苦痛です。

于 2011-06-24T14:30:32.460 に答える