【发布时间】:2011-09-10 17:33:17
【问题描述】:
请协助解决 MVVM 设计/理解问题。
鉴于我们有一个具有以下 UI 结构的 Windows Phone 应用:
MainPage.xaml 正文:
<views:PanoramaView/>
DataContext is set via MVVM Light view-model locator to a static MainViewModel class instance.
Views/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,但能够实例化新视图(全景项目)并将它们注入到我的 PanoramaViewModel 的 PanoramaItems 集合中。我在哪里以及如何做到这一点?
【问题讨论】:
-
MVVM 与此无关。
-
我假设如果我需要基于在全景控件的 Items 集合中找到的视图模型类型显示不同的视图,那么它与 MVVM 有关。但是,正如我所说,我不知道如何解决这样的要求,所以你可能是正确的,这个问题超出了 MVVM 的范围。
-
谢谢。我正在努力。
-
@Claus,如果你只是想用一种边缘性的破坏性回应来驳回他的问题,并且不提供任何建设性的回报,为什么还要费心回答呢?
标签: c# .net windows-phone-7 mvvm panorama-control