我有一个在主应用程序中有 3 列的数据网格。在第三列中,我想使用项目渲染器,我想使用其中有两个组件的 hbox。一个是按钮,一个是标签。我在主应用程序中也有一个滑块。我想使用使用数据网格的滑块从主应用程序文件中更改 itemrenderer 按钮的 alpha。我可以使用数据属性访问项目渲染器中的数据提供者属性。但是如何访问父应用程序属性。为此,我尝试创建自定义数据网格并使用数据绑定传递滑块的值。但无法访问该属性。在我做同样事情的列表中,我可以使用项目渲染器的 listData 属性访问该属性,但在 datagrid 的情况下我不能这样做。
问问题
1843 次
2 回答
1
如何访问父应用程序属性
一般来说; 我建议你不要。itemRenderer 应该能够通过数据元素访问它需要的所有属性;这与dataProvider有关。
访问显示层次结构中较高的组件属性是封装的中断。
也就是说,有很多方法可以做到这一点。
要访问主应用程序,您可以使用FlexGlobals.topLevelApplication访问顶级应用程序。
您可以将滑块值存储为静态变量,并以这种方式从 itemRenderer 访问它。
您可以将滑块值存储在某个数据/模型对象中,并使用依赖注入框架(例如Swiz或Robotlegs)将该数据/模型对象注入您的 itemRenderer。
于 2012-11-04T21:24:15.777 回答
1
如果要访问外部属性,可以在 itemRenderer 中使用outerDocument,例如:
//代码
public var str:String = "Test";
[Bindable] private var arr:Array = [
{field:'ROW1'},
{field:'ROW2'},
{field:'ROW3'}
];
//MXML
<mx:DataGrid id="grid" width="100%" height="100%" dataProvider="{arr}">
<mx:columns>
<mx:DataGridColumn dataField="field">
<mx:itemRenderer>
<mx:Component>
<mx:Label text="{data.field + ' ' + outerDocument.str}"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
这个URL 显示了我所说的一个很好的例子。我希望它会有所帮助。
于 2012-11-05T16:10:03.197 回答