【问题标题】:Silverlight MVVM conversion from WPF从 WPF 转换 Silverlight MVVM
【发布时间】:2010-05-13 11:15:51
【问题描述】:

我正在阅读这篇文章 - http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

我在文章附带的 WPF Demo 应用程序中遇到了这段代码。

此模板将 CustomerView 应用于主窗口中显示的 CustomerViewModel 类的实例。

<DataTemplate DataType="{x:Type vm:CustomerViewModel}">  
    <vw:CustomerView />  
</DataTemplate>

我用尖括号代替了方括号 - 不知道如何发布它们。

代码在 MainWindowResourses.xaml 中,代码从第 19 行开始。

有人知道我如何在 Silverlight 中做到这一点吗? 我们没有 DataType,我需要能够告诉应用这个 View 与这个 ViewModel 相关联 - 所以我可以创建一个带有不同视图的选项卡控件,就像演示应用一样。

干杯,

EC

【问题讨论】:

  • 我刚刚为你编辑了你的代码块——你能检查一下它是你想要的吗?干杯。
  • 是的,这就是业务 :) 我想我发现了问题所在。我正在使用 MVVM Light 工具包 - 但我没有使用应用程序的定位器部分 - 我认为定位器可以满足我的需要 - 需要阅读它:) 谢谢
  • 我已将问题标记为 mvvm-light。经常在此处浏览的 MVVM Light Toolkit 背后的人 Laurent Bugnion 可能对此事有更好的了解。

标签: silverlight mvvm mvvm-light


【解决方案1】:

这是 WPF 隐式样式的示例,其中样式应用于项目中的所有控件。这是not supported in Silverlight

要解决这个问题,您需要将视图控件放置在标记中并将其 DataContext 设置为视图模型。

<Window.Resources>
    <vm:CustomerViewModel x:Key="theViewModel">  
<Window.Resources>

<vw:CustomerView DataContext={StaticResource theViewModel}/>  

theViewModel 不必来自资源部分,它可以是托管 XAML 控件/页面中的属性。

【讨论】:

  • 好的,但我希望能够动态创建视图,就像我在上面发布的文章中一样。我将有许多视图,它们将被添加到 TabControl 中 - 那么我将如何添加到我的“工作区”集合中并让它正确呈现视图?顺便说一句,我正在使用 MVVM Light 工具包...
  • 不要认为不需要 Prism 之类的东西就可以开箱即用 - compositewpf.codeplex.com 无论如何都值得探索。
  • 我还没有尝试过像那样模板化我的视图模型,它可能会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
相关资源
最近更新 更多