2009-06-19 12 views
7

MVVMでは、すべてのビューにViewModelがあります。ビュー私はウィンドウ、ページまたはUserControlであると理解しています。このビューには、ビューからデータを取得するViewModelをアタッチできます。MVVMでは、DataTemplatesが使用されていますUserControlsビューはビューですか?

しかし、DataTemplateは、ViewModelのデータをレンダリングすることもできます。

私はDataTemplateが別の「ビュー」であることを理解していますが、の違いと思われます。 Windows、Pages、およびUserControlsは、独自の.dllを定義できます。一方の型はDataContectにバインドされ、もう一方はテンプレートを添付してバインドされます。ServiceLocator/ContainerなどでWindows、Pages、UserControlsを動的にViewModelsにアタッチできます。

UIでViewModelのデータをレンダリングする場合、DataTemplatesとWindows/Pages/UserControlsの違いは他にありますか?そして、これらの4つ以外の他のタイプの「ビュー」がありますか?

答えて

7

DataTemplateは実際には、ViewModelにViewをリンクする方法です。一般的にMVVMでの私のDataTemplatesはそのように見える:私はのviewmodelにビューをバインドするためにDataTemplateを使用してお勧めしません

<DataTemplate DataType="{x:Type vm:FooViewModel}"> 
    <v:FooView /> 
</DataTemplate> 
+0

興味深いですが、XAMLの外観はどうやって見えますか?私はこれの小さな例を試してコンパイルし、Visual StudioはAdministrator権限(Vista)が必要だと言った。プロジェクトでこのパターンをどのように使うかを見たいと思います。 –

+0

基本的に、私はApp.xamlまたはメインウィンドウのXAMLに "マッピング"データ型を入れて、その他はすべてUserControlsです... –

+0

ViewModelをプルするためにContentControlを使用していますか?この

0

。 現在、ビューにフォーカスが移るたびにビューが更新されるため、このアプローチを使用するとパフォーマンスの問題が発生します。 ご覧のとおり、herehere

Unfortunatley私はまだ良い選択肢が見つかりませんでした。

のUserControl:MVVMへの移行では、この時点で、私にはほとんど意味を作って何

1

はあるグループビューとユーザーのための全体のプロセスを実行するために意図されている一緒に制御します。私は、ユーザが異なる分類の部品(それぞれの主要部品カテゴリがユーザ自身の選択プロセス/ウィザードを通じてユーザを迂回する)を裏返すことを可能にする、作成したスライドアウト・ドロワ用のユーザ制御を使用する。 Charting Controlsも見てください。

ビュー:基本的に、関連するデータとコントロールをグループ化し、必要なデータを最小レベルで再利用できるように配置するグリッドです。

DataTemplates:リストボックスやGridViewのような「アイテム」についての事実をグループ化します。私はこれを、あなたがリスト内で情報を得ようとしているオブジェクトをどのように表現しているかのように思っています。したがって、コントロールテンプレートは、データテンプレートブロックをラップして、そのデータのテンプレートラップアイテムの表示動作を制御します。

それは私がそれを理解する方法ですが、境界は非常に曖昧です。私はApressの本が好きですPro Expression Blend 4 Andrew Troelson著しかし、彼は本当にデータ重視の例を提供していません。

関連する問題