Silverlight控件的一个挑战是,当属性被绑定到代码时,它们就不再真正可以混合编辑了。例如,如果您已经从数据提要中填充了一个ListView,那么当您编辑混合控件时,就没有可见的元素。
我听说由WPF开发社区创建的MVVM模式也有助于保持Silverlight控件的“混合”。我还在盘算着这件事,但以下是一些解释:
一个潜在的缺点是,这种模式需要额外的类,尽管不一定需要更多的代码(如上面的第二个链接所示)。有什么想法?
发布于 2008-12-19 09:21:54
我肯定认为您应该在Silverlight应用程序中使用MVVM模式--该模式的好处之一是,您实际上可以通过一些简单的技术使您的应用程序变得更好。我经常将“混搭性”称为“可设计性设计”--即您使用某些技术来确保您的应用程序在混合中看起来很棒。
Torbj rn指出,其中一种技术是使用依赖注入框架,并根据代码是在混合中执行还是在浏览器中执行,提供不同的外部服务实现。因此,我将我的容器配置为在代码以混合方式执行时使用虚拟数据提供程序,这样您就可以获得列表框、数据网格等的设计时间支持。
挑战通常是如何以声明的方式设置DataContext --因此我常常使用服务定位器类作为IoC容器的“前端”。这样,我就可以将数据上下文绑定到服务定位器上的属性。
另一种技术是创建具有两个属性的ObjectDataSource控件(非可视):设计时DataContext和RunTime数据上下文。该控件的任务是检测正在执行的位置,然后将父DataContext设置为正确的对象。
发布于 2008-12-17 17:25:33
我不知道能否回答你的问题,但我对下面这篇文章很有价值。当处于设计/混合模式时,乔纳斯·福勒正在使用ninject来切换他的服务。非常好!
http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx
发布于 2009-01-08 04:35:56
我也同意乔纳斯的观点。与Silverlight有关的MVVM。我确实相信MVP也是一个不错的选择,但是最近我有时间用Silverlight来尝试MVP和MVVM,而且我对MVVM的结果更高兴。(是的,我越多地使用MVVM,我就改变了主意)。VM从MVVM中的View (显然)抽象出模型的绑定,这允许比使用MVP更多的绑定场景(至少是更干净的方法)。不过,这只是一个方面。
我将在我的站点上发布一些MVP和MVVM与Silverlight的示例。
https://stackoverflow.com/questions/375301
复制相似问题