请协助解决 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
. 我在哪里以及如何做到这一点?