我想让提供给DataGrid的数据决定它应该如何最佳呈现(也就是说,让数据携带一个将进行渲染的对象)。
例如,通过创建一个“Renderable”界面,该界面具有“渲染器:IFactory”属性,然后使用如下:
<mx:DataGrid x="0" y="0" width="100%" dataProvider="{myDataProvider}">
<mx:columns>
<mx:DataGridColumn headerText="Task" width="100"
itemRenderer="{(data as Renderable).renderer}"/>
</mx:columns>
</mx:DataGrid>
但要做到这一点,Renderable必须扩展IEventDispatcher
,这似乎有点......
我也尝试过使用:
itemRenderer="{(data as Renderable).getRenderer()}"
哪个什么都不做(事实上,getRenderer
方法永远不会被调用)。
有更好的方法吗?我做了一些根本错误的事情吗?
谢谢!
答案 0 :(得分:2)
我可能错了,但我认为您在上面的代码示例中引用的“data”属性是视图中顶级Container的“数据”,而不是DataGrid的特定行。我想到了其他一些方法:
我实际上建议不要将特定于视图的“渲染器数据”与模型中的数据混合。除非您使用与渲染器一起公开它的对象包装核心模型数据(有些人称之为ViewModel)。
答案 1 :(得分:0)
使getRenderer成为[Bindable]属性