【发布时间】:2011-10-04 16:49:39
【问题描述】:
在 Flex 3 中,过去可以通过 outerDocument 在 itemRenderer 中绑定组件属性。因此,例如,如果 itemRenderer 中的图像仅在父级的给定条件下显示,则这样的事情会完美地工作:
<mx:itemRenderer>
<mx:Component>
<mx:Label text="{data}"/>
<mx:Image id="img" visible="{outerDocument.ShowImage}" includeInLayout="{outerDocument.ShowImage}"/>
</mx:Component>
</mx:itemRenderer>
外部文档(不是列表,而是列表所在的 mxml)包含类似的内容
[Bindable]
public function get ShowImage():void
{
return showImage;
}
public function set ShowImage(val:Boolean):void
{
showImage = val;
}
我尝试在 Flex 4.5 中使用使用 parentDocument 的 Spark 项目渲染器做同样的事情,但它似乎不知道绑定。当我在 Flex 4.5 中执行此操作时,itemRenderer 似乎不知道 parentDocument ShowImage 何时更改。
有没有人看到这个问题并能够提供解决方案?
编辑:添加 Spark 源 根据要求,这里是我的火花源:
MyItemRenderer.mxml
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<s:Label id="myLabel" text="{data}/>
<s:Image src="something.png" visible="{parentDocument.ShowImage}" includeInLayout="{parentDocument.ShowImage}"/>
</s:ItemRenderer>
渲染容器.mxml
<s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
private var showImage:Boolean = false;
[Bindable]
public function set ShowImage(val:Boolean):void
{
showImage = val;
}
public function get ShowImage():Boolean
{
return showImage;
}
]]>
</fx:Script>
<!-- Content Group -->
<s:List id="lstCell" width="100%" height="100%" itemRenderer="MyItemRenderer">
</s:List>
</s:Panel>
好的,所以在 RendererContainer.mxml 之外的包装器中有一个复选框,它调度通过更改可绑定布尔值来处理的自定义事件。然后,该 var 中的更改会更改我的 RendererContainer 组件上的 ShowImage 属性。我希望绑定会被 MyItemRenderer 拾取,但它似乎不起作用。
所以我的外包装会像这样访问 ShowImage
<comp:RendererContainer id="myId" ShowImage="{myCheckbox.selected}"/>
【问题讨论】:
-
显示 4.5 示例的代码。
-
通常要使某些东西可绑定,您需要在可绑定元数据标记中指定一个事件并从 set 方法调度该事件。那就是说你有错误吗?或者 itemRenderer 中的值没有改变?
-
没有错误。 itemRenderer 只是没有更新。基本上,我有一个“控制面板”,其中包含可以在 itemRenderer 中显示的选项。控制面板只有一个复选框,用于在值更改时调度事件。该事件的处理程序会更新属性 ShowImage(标记为 Bindable),但是当我切换复选框时,我根本看不到图像在 itemrenderer 中出现或消失。我将发布 4.5 的代码
标签: apache-flex flex4.5 itemrenderer flex-spark