0

我有一个在主应用程序中有 3 列的数据网格。在第三列中,我想使用项目渲染器,我想使用其中有两个组件的 hbox。一个是按钮,一个是标签。我在主应用程序中也有一个滑块。我想使用使用数据网格的滑块从主应用程序文件中更改 itemrenderer 按钮的 alpha。我可以使用数据属性访问项目渲染器中的数据提供者属性。但是如何访问父应用程序属性。为此,我尝试创建自定义数据网格并使用数据绑定传递滑块的值。但无法访问该属性。在我做同样事情的列表中,我可以使用项目渲染器的 listData 属性访问该属性,但在 datagrid 的情况下我不能这样做。

4

2 回答 2

1

如何访问父应用程序属性

一般来说; 我建议你不要。itemRenderer 应该能够通过数据元素访问它需要的所有属性;这与dataProvider有关。

访问显示层次结构中较高的组件属性是封装的中断。

也就是说,有很多方法可以做到这一点。

要访问主应用程序,您可以使用FlexGlobals.topLevelApplication访问顶级应用程序。

您可以将滑块值存储为静态变量,并以这种方式从 itemRenderer 访问它。

您可以将滑块值存储在某个数据/模型对象中,并使用依赖注入框架(例如SwizRobotlegs)将该数据/模型对象注入您的 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 回答