MVVM - 在Silverlight和WPF之间共享/重用ViewModels

5

是否可以在WPF/Silverlight平台之间共享视图模型(ViewModels)?我开始把我的VMs放在一个单独的程序集中,但很快遇到了ICommand - 这就引发了我的疑问。这是否可行,如果可行,是否值得这样做?我们未来可能会有一个针对WPF和Silverlight的客户端应用程序,因此我不想为两者复制VMs。

2个回答

4
您可以使用便携式库工具CTP来实现此目的。这允许您在单个库项目中针对完整框架以及Silverlight进行定位。
否则,也有可能做到这一点。从实际角度出发,您仍需要两个单独的项目,但通常可以使用单个源文件。使每个项目使用相同的源文件可保持重用性,但需要手动同步文件。在这种情况下,您还可以通过部分类或定义轻松添加特定于平台的功能,这有助于保持一些缺少Silverlight功能的解决方法易于维护。

我认为便携式库选项是你最好的选择,但它会迫使你编写代码以适应最低公共因子。对于ViewModel来说,这不应该是一个问题,因为你应该将任何与View相关的特殊性抽象到View中,并将任何平台特殊性抽象到服务层中。 - Joel Cochran

0

在Silverlight中几乎所有的功能都可以在WPF中实现,所以如果你有一个在Silverlight中工作的VM,它在WPF中也会[大多数情况下]正常工作。

从另一个角度来看,WPF提供了更丰富的可能性,因此您可能希望在WPF代码的一部分中使用它们。您可以使用通常的类似于#ifdef Silverlight的技巧。

此外,此问题可能会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接