带有DataTemplateSelector的MVVM如何从Silverlight移植到Flex?

时间:2011-04-09 20:17:56

标签: silverlight flex mvvm

我在这里问了一个关于MVVM In MVVM there can be only one View for each one View Model?

的问题

答案是使用DataTemplateSelector获取多个观看次数。现在让我们说我需要移植到flex。 Flex是否与DataTemplateSelector具有相同的范例?

由于Silverlight声称它接近Flex,所以我希望看到证据:)

1 个答案:

答案 0 :(得分:1)

具体来说,没有“DataTemplateSelector”。但这并不奇怪,因为它们是不同的堆栈...(它们在功能奇偶校验和开发人员范例方面彼此非常相似)在Flex中,有皮肤的概念,它与模板非常相似。项目渲染器的概念也非常类似于重复视图中的数据模板(List,DataGroup,DropDownList,ComboBox,DataGrid等)

对于项呈示器(很可能是您正在讨论的内容),组件具有可选的itemRendererFunction属性,该属性决定使用哪个项呈示器。它允许在Presentation Models之上播放极其动态的视图(它们在Flex中不被称为View Models ......它们使用Presentation Model的原始名称......不确定为什么Silverlight会将其更改为MVVM ... I离题)。

对于所有其他(基于Spark)组件的外观,您可以使用.setStyle('skinClass', TheSkin)

在运行时更改外观

此外,您可以使用IoC容器将Presentation Models与任何视图粘合在一起。这实际上很容易。

同样,我曾经构建了一个非常小的视图映射引擎,它允许您根据类型注册视图,并自动进行数据绑定。很像像Silverlight的Prism中的RegionManager。

如果您对Presentation Model如何适应Flex感兴趣,我写了两篇关于该主题的文章:

MVVM vs Presentation Model Presentation Model for using in Multiple Screens

第二个链接将在周二发布一个后续内容,描述如何在同一个演示模型之上使用多个视图。

所以,是的。有几种解决方案可以实现您想要实现的目标。它们都不是直接的,因为它们是不同的堆栈,但功能肯定存在。