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),可以让我控制在给定时间显示哪些全景项目。

所以必须有一种方法让我仍然坚持使用 MVVM,但能够实例化新视图(全景项目)并将它们注入PanoramaItems我的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 回答