2009-06-24 13 views
4

私はMVVMを使用せずにWPFでプロトタイプをやっています。私がMVVMを使うためにそれをリファクタリングするようになりました。MVVM - コントロール対ビュー

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

私は今、ViewsとViewModelsで物事を壊しています。しかし、私はUserControlsを含むビューで終わっています。 UserControlsには、モデル内のオブジェクトが現在バインドされています。

MVVMでUserControlsの概念が死んでいますか?私が言っていることは、過去に(WinFormsやASP.NETなど)、「Controls」というプロジェクトがあり、これらを再利用するということでした。 MVVMの 'ビュー'は一般的なUserControlの直接の代替ですか?

答えて

6

UserControlは、少し修正された既定のプロパティ値を持つContentControlより少しです。 ContentControlは、見た目を定義するためにテンプレートを適用できるコンテンツのほんの一部です。

MVVMのやり方は、仲介者をスキップし、ビューをDataTemplateと定義します。次に、あなたのVMをWPFのビジュアルツリーに貼り付けるだけで、WPFはあなたのDataTemplateでレンダリングします。例:

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

<ItemsControl ItemsSource="{Binding SomeViewModels}"/> 
+0

これは私がケントをしていることですが、DataTemplateにUserControlをラップすることはできません。 –

1

Mmmm ...私はユーザーコントロールを持っていただけで、ビューからユーザーコントロール(そのユーザーコントロールが必要とするサブ情報)にDataContextを渡しました。しかし、実際には、Views、UserControls、ViewModelに合わせるのが難しい場合があります。

2

MVVM世界でUserControlsが表示される方法は、Viewです。 WPFフォームを単一のビューとして考えるのではなく、1つまたは複数のビューのコンポジットと考えることができます。そのため、UserControlは、複数のコンポジットビューに組み込むことができる標準の再利用可能なビューをカプセル化できます。再利用性には優れていますが、依然としてテスト可能です。 WPFでの

関連する問題