[英]Databound windows phone panorama with MVVM design
请协助解决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,但能够实例化新的Views(全景项目)并将其注入我的PanoramaViewModel
的PanoramaItems
集合中。 我在哪里以及如何做?
您必须定义资源键,以使用用于不同视图模型类类型的视图项的视图设置器定义数据模板,并从通用基类(即PanoramaViewModel)派生VM类。
在WPF中,我应该使用DataTemplateSelector来解决我的设计问题。 由于Windows Phone应用程序更像Silverlight,因此我可以自己实现它。 如何是一个很好的例子此文章, 这一 silverlight.net论坛主题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.