【问题标题】:Databound windows phone panorama with MVVM design带有 MVVM 设计的数据绑定 windows phone 全景图
【发布时间】: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,但能够实例化新视图(全景项目)并将它们注入到我的 PanoramaViewModelPanoramaItems 集合中。我在哪里以及如何做到这一点?

【问题讨论】:

  • MVVM 与此无关。
  • 我假设如果我需要基于在全景控件的 Items 集合中找到的视图模型类型显示不同的视图,那么它与 MVVM 有关。但是,正如我所说,我不知道如何解决这样的要求,所以你可能是正确的,这个问题超出了 MVVM 的范围。
  • 谢谢。我正在努力。
  • @Claus,如果你只是想用一种边缘性的破坏性回应来驳回他的问题,并且不提供任何建设性的回报,为什么还要费心回答呢?

标签: c# .net windows-phone-7 mvvm panorama-control


【解决方案1】:

您必须定义资源键来定义具有视图设置器的数据模板,以便为不同视图模型类类型呈现的视图项,并从公共基类(PanoramaViewModel,即)派生 VM 类

【讨论】:

    【解决方案2】:

    在 WPF 中,我应该使用 DataTemplateSelector 来解决我的设计问题。 由于 Windows Phone 应用程序更像 Silverlight,因此我可以自己实现它。 this 文章和 thissilverlight.net 论坛主题是一个很好的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-17
      • 2012-09-11
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 2014-05-19
      相关资源
      最近更新 更多