Apache flex 如何访问项目渲染器内的父应用程序属性

Apache flex 如何访问项目渲染器内的父应用程序属性,apache-flex,custom-component,itemrenderer,Apache Flex,Custom Component,Itemrenderer,我有一个datagrid,它在主应用程序中有3列。在第三列中,我想使用项目渲染器,其中我想使用hbox,其中有两个组件。一个是按钮,一个是标签。我在主应用程序中也有一个滑块。我想使用滑块更改主应用程序文件中itemrenderer按钮的alpha,其中使用了datagrid。我可以使用数据属性访问项目渲染器中的数据提供程序属性。但是如何访问父应用程序属性。为此,我尝试创建自定义datagrid,并使用数据绑定传递slider的值。但无法访问该属性。在一个列表中,当我做同样的事情时,我可以使用it

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

如何访问父应用程序属性

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

访问显示层次结构中较高级别的组件的属性是封装的突破

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

要访问主应用程序,可以使用访问顶级应用程序

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


您可以将滑块值存储在某些数据/模型对象中,并使用依赖项注入框架(例如或)将该数据/模型对象注入itemRenderer

如果要访问外部属性,可以在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>  

这是我所说的一个很好的例子。
我希望这会有帮助。

+1因为你不应该这样做。我还想补充一点,您可以创建一个类工厂,并使用它为渲染器提供对滑块的引用或反映其值的可绑定数据对象。在使用类工厂发送属性方面,我有一个盲点。不知道为什么;我总是忘记这一点。@amynship我如何使用类工厂访问父应用程序的属性。通过使用listData属性,我们可以实现相同的目标吗?几天来,我用代码问了同样的问题。它的链接是@AmyBlankenship,我想我错在哪里了。我正在使用gridcolumn上的渲染器。在这种情况下,渲染器的父级不是datagrid,而是gridcolumn。该值传递给datagrid,而不是gridcolumn。因此,这可能是渲染器的listData为null的原因。对于list,我们将属性传递给list,以便呈现程序能够访问listData属性。如果我错了,请纠正我。我不知道,因为我觉得即使使用listdata也是孩子们干涉他们父母的事情,我认为这不是一个好的做法。您可能会发现,这解决了您的问题,在我的情况下,渲染器位于其他文件中。我需要在用户拖动滑块时访问它的值。根据slider的当前值,我想在set data函数中设置逻辑。