7

MVVM では、すべてのビューに ViewModel があります。ビューは、ビューがデータを取得するViewModelをアタッチできるウィンドウ、ページ、またはユーザーコントロールであると理解しています。

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

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

UI で ViewModel のデータをレンダリングする場合、DataTemplates は Windows/Pages/UserControls とどのように異なりますか? また、これら 4 つ以外の「ビュー」の種類はありますか?

4

3 に答える 3

7

私がそれを使用する方法では、DataTemplate は実際には View を ViewModel にリンクする方法です。通常、MVVM の DataTemplates は次のようになります。

<DataTemplate DataType="{x:Type vm:FooViewModel}">
    <v:FooView />
</DataTemplate>
于 2009-06-19T10:02:38.167 に答える
1

MVVM への移行のこの時点で私にとって最も理にかなっていることは次のとおりです。

UserControls: ユーザーのプロセス全体を実行するためのビューとコントロールをグループ化します。ユーザーがパーツのさまざまな分類をめくることができるように作成したスライド アウト ドロワーにユーザー コントロールを使用します (各メイン パーツ カテゴリは、独自の選択プロセス/ウィザードを介してユーザーをルーティングします)。Charting Controls も参照してください。

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

DataTemplates: リストボックスや GridView などの "項目" に関する事実をグループ化します。これは、リスト内で情報を取得しようとしているオブジェクトをどのテキストがどのように表しているかということだと思います。したがって、コントロール テンプレートはデータ テンプレート ブロックをラップして、データ テンプレートでラップされた項目のコレクションの表示動作を制御します。

そのように理解していますが、境界は非常に曖昧です。Andrew Troelson によるApress の本Pro Expression Blend 4が好きです。ただし、彼はデータ量の多い例を実際には示していません。

于 2012-08-12T06:16:17.557 に答える
0

ビューをビューモデルにバインドするために DataTemplate を使用することはお勧めしません。ビューがフォーカスされるたびにビューが更新されるため、現在、このアプローチを使用するとパフォーマンスの問題が発生します。ここここでわかるように

残念ながら、私はまだより良い選択肢を見つけていません。

于 2010-05-18T14:59:58.990 に答える