В Flex 3 ранее было возможно связать свойство компонента в itemRenderer с помощью внешнего документа. Так, например, если был образ внутри ItemRenderer, который отображается только на заданном состоянии родителя, то, как это будет работать отлично:Adobe Flex 4.5 Искра: связывание компонента 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, но это не кажется, чтобы быть в курсе к связыванию. Когда я делаю это в Flex 4.5, itemRenderer, похоже, не знает, когда изменяется parentDocument ShowImage.
Кто-нибудь видел эту проблему и может предложить решение?
EDIT: Добавить искровой источник В соответствии с просьбой вот мой искры источник:
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>
ИТАК есть флажок в wrapper вне RendererContainer.mxml, который отправляет настраиваемое событие, которое обрабатывается путем изменения Bindable Boolean. Изменение этого var затем изменяет свойство ShowImage на моем компоненте RendererContainer. Я ожидал бы, что привязка тогда будет получена MyItemRenderer, но она, похоже, не работает.
Так что мой внешний обертка доступ будет ShowImage как этот
<comp:RendererContainer id="myId" ShowImage="{myCheckbox.selected}"/>
Показать код для 4.5. Например, –
Как правило, для создания чего-то Bindable вам нужно указать событие в теге Bindable Metadata и отправить это событие из метода set. Тем не менее, вы получаете ошибки? ИЛИ значение в itemRenderer просто не меняется? – JeffryHouser
Нет ошибок. ItemRenderer просто не обновляется. В принципе, у меня есть «панель управления», которая содержит опции для того, что может отображаться внутри itemRenderer. Панель управления имеет флажок, который отправляет событие при изменении значения.Обработчик для этого события обновляет свойство ShowImage (которое помечено как Bindable), но когда я переключаю флажок, я просто не вижу, как изображения появляются или исчезают в itemrenderer. Я отправил код для 4.5 – Shawn