0

MVVM の設計/理解の問題について支援してください。

次の UI 構造を持つ Windows Phone アプリがあるとします。

MainPage.xaml本体:

<views:PanoramaView/>

DataContext is set via MVVM Light view-model locator to a static MainViewModel class instance.

ビュー/PanoramaView.xaml本体:

<UserControl.DataContext>
        <ViewModels:PanoramaViewModel/>
</UserControl.DataContext>

<StackPanel x:Name="LayoutRoot">
        <controls:Panorama Background="{Binding PanoramaBackgroundBrush}"
                           ItemsSource="{Binding PanoramaItems}"
                           ItemTemplate="{StaticResource panoramaItemTemplate}"
                           />
</StackPanel>

その時点で、私は質問に出くわしました -すべての PanoramaItems を異なるユーザー コントロールで構成したい場合はどうすればよいですか? パノラマ アイテム テンプレートを定義すると、すべてが同じになる運命にあります。しかし、私の意図は、いくつかの完全に異なるパノラマ アイテムを用意することです。PanoramaViewModel特定の時点でどのパノラマ項目を表示するかを制御できるクラス (おそらく) が必要でした。

PanoramaItemsしたがって、私がまだMVVMに固執する方法が必要ですが、新しいビュー(パノラマアイテム)をインスタンス化し、それらを私のコレクションに注入できるようにする必要がありますPanoramaViewModel。どこで、どのようにすればよいですか?

4

2 に答える 2

1

リソース キーを定義して、さまざまなビュー モデル クラス タイプに対してレンダリングされるビュー アイテムのビュー セッターを使用してデータ テンプレートを定義し、共通の基本クラス (PanoramaViewModel など) から VM クラスを派生させる必要があります。

于 2011-09-10T17:52:21.600 に答える
0

WPFでは、DataTemplateSelectorを使用して設計上の問題を回避する必要があります。Windows PhoneアプリはSilverlightに似ているので、自分で実装できます。この記事とこのsilverlight.netフォーラムスレッドにその方法の良い例があります。

于 2011-09-10T19:34:14.467 に答える