4

MVVM を使用せずに WPF でプロトタイプを作成しています。MVVM を使用するようにリファクタリングしている現在、このようなサイズになっています。

プロジェクトを開始したとき、私はすぐに飛び込んで、多くのことのために UserControls を作成しました。

私は今、ビューとビューモデルで物事を壊しています。しかし、私は UserControls を含むビューになってしまいます。UserControls には、現在モデル内のオブジェクトになっているものへのバインディングがあります。

では、MVVM では UserControls の概念はなくなったのでしょうか? つまり、過去 (WinForms、ASP.NET など) では、'Controls' というプロジェクトがあり、これらを再利用していました。MVVM の「ビュー」は、典型的な UserControl を直接置き換えるものですか?

4

3 に答える 3

6

UserControlWPFの AはContentControl、わずかに微調整された既定のプロパティ値を持つ a にすぎません。ContentControlは、テンプレートを適用して外観を定義できるコンテンツの一部にすぎません。

私が行う MVVM のやり方では、仲介者をスキップし、ビューをDataTemplates として定義します。次に、VM を WPF のビジュアル ツリーのどこかに貼り付けるだけで、WPF はそれをDataTemplate. 例えば:

<ContentControl Content="{Binding SomeViewModel}"/>

<ItemsControl ItemsSource="{Binding SomeViewModels}"/>
于 2009-06-24T08:40:35.820 に答える
2

MVVMの世界でUserControlsを見る方法は、ビューとしてです。WPFフォームを単一のビューとして考えるのではなく、1つ以上のビューの複合として考えることができます。したがって、UserControlは、複数の複合ビューに組み込むことができる標準の再利用可能なビューをカプセル化できます。再利用に最適ですが、それでもテスト可能です。

于 2009-06-24T07:18:21.710 に答える
1

うーん...ユーザーコントロールがあったとき、ビューからユーザーコントロール(そのユーザーコントロールに必要なサブ情報)にDataContextを渡しました。しかし、確かに、ViewModelをViews、UserControls、...に適合させるのは難しい場合があります。

于 2009-06-24T07:16:00.657 に答える