MVVM - Flex中的表示模型与Silverlight中的表示模型:优点和缺点?

时间:2011-04-10 05:59:27

标签: silverlight flash flex model-view-controller mvvm

正如这里所说:

http://houseofbilz.com/archives/2010/12/29/cross-training-in-silverlight-flexmvvm-vs-presentation-model/

“如果你今天在谷歌搜索”MVVM和Flex“,那么第一篇文章就是那些声称MVVM不适合Flex的人。我不能不同意。开箱即用,Flex框架使得实现Presentation Model比在Silverlight中类似的MVVM实现更容易。这并不是说没有好的第三方库使Silverlight更容易,但没有任何帮助,它更容易做到Flex。“

因此MVVM作为LOGICAL CONCEPT可以在两者中实现,但在Silverlight中实现的方式需要比Flex更多的管道。

什么阻止Silverlight MVVM像Flex一样实现? Silverlight在事件系统中是否具有相同的功能?

如果是,为什么Silverlight做的事情更复杂呢?是否使用更强类型的类接口?

还有哪些缺点?例如,对于1个View-Model实现MULTIPLE VIEWS,Flex实现是否也更明显?

2 个答案:

答案 0 :(得分:1)

有两件事,真的让它更复杂:

  • 实施INotifyPropertyChanged
  • 命令

您在Silverlight中可以做的一件事是使用"Property Weaver"。它将执行类似于Flex中[Binding]标记的操作,因为它将自动获取公共getter / setter并使用INPC模式重新编写它们。

至于命令,DelegateCommand中的包装方法证明是很多管道。有几种方法可以解决这个问题。我喜欢基于约定的方法,您可以在其中声明名为Execute_Something的公共方法,并自动创建命令Something以供您绑定。 HereHere

最后,Flex中的绑定是基于表达式的,而Silverlight中的绑定纯粹是声明性的。我有一些想法,当我们得到C#v.Next时,我们可以很容易地进行基于表达式的绑定。

答案 1 :(得分:1)

  

什么阻止Silverlight MVVM像Flex一样实现?

<。>在.net silverlight / wpf中一切都应该是透明的。绑定是通知机制,所以它应该“至少”像事件基础系统一样。

  

如果是,为什么Silverlight会做事情   更复杂的是什么优点   那么?

对我来说,这是关于心态,如果我知道它是一个事件基础系统,那么我应该小心使用它。不要过度使用它等等。

案例:绑定转换器,易于在flex中实现,而不是在silverlight中。

在flex中:text="{getColor(pm.customerName)}"是的,这很简单,但问题是你确定你的PM会被垃圾收集正确发布,因为它是一个事件基础系统,负责观察变化吗? getColor方法?还是text财产?或两者?真的很难知道。

在silverlight中:text="{Binding CustmerName, Converter={StaticResources nameToColorConverter}}"我不需要问谁有责任观察,因为colorConverter只是绑定支持的转换器。我不需要担心内存泄漏。

所以,对我而言,这完全是关于心态的。