在Flex 3中,它曾經有可能通過outerDocument綁定itemRenderer中的組件屬性。因此,舉例來說,如果有也僅僅父給定的條件下顯示的itemRenderer內的圖像,像這樣的工作完美:Adobe Flex 4.5 Spark:綁定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更改時似乎不知道。
有沒有人看過這個問題,並能提供解決方案?
編輯:添加火花源 如這裏要求是我的火花來源:
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>
RendererContainer.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以外的包裝器,該包裝調度通過更改Bindable布爾值來處理的自定義事件。然後該var中的更改將更改我的RendererContainer組件上的ShowImage屬性。我期望綁定將被MyItemRenderer拾取,但它似乎沒有工作。
所以,我的外包裝紙將訪問ShowImage這樣
<comp:RendererContainer id="myId" ShowImage="{myCheckbox.selected}"/>
顯示爲4.5例子中的代碼。 –
正常情況下,您需要在Bindable元數據標籤中指定一個事件並從set方法中分派該事件。這就是說你得到的錯誤?或者itemRenderer中的值只是沒有改變? – JeffryHouser
沒有錯誤。 itemRenderer只是不更新。基本上,我有一個「控制面板」,其中包含可在itemRenderer中顯示的選項。控制面板只有一個複選框,當值更改時調度事件。該事件處理程序更新屬性ShowImage(標記爲Bindable),但當我切換複選框時,我根本沒有看到圖像在itemrenderer中出現或消失。我發佈了4.5 – Shawn