Связывание выбранного элемента из DataGroup (поставщик данных представляет собой список XML) с другим компонентом (FLEX 4) - PullRequest
0 голосов
/ 04 апреля 2011

Добрый день всем!

У меня есть DataGroup с миниатюрами, которые она получает из списка XML, переданного в ArrayCollection. У меня также есть пользовательское средство визуализации элементов для группы данных. То, что я не могу заставить работать, - это следующее: при нажатии на миниатюру в группе данных состояние меняется на страницу с информацией о проектах.

У меня есть информация в том же XML-файле. Мне нужно привязать источник richtext и несколько компонентов метки к выбранному элементу из группы данных с другим свойством проекта из списка XML. Если бы это был простой компонент List, я бы сделал это следующим образом: для списка
id = "myList" dataProvider = "{myProjects.Project}" для этикетки текст = "{myList.selectedItem.textexample}"

Код, который у меня есть для группы данных :

<s:DataGroup includeIn="ThumbnailList" dataProvider="{myList}" alpha="0.72" 
blendMode="luminosity" buttonMode="true" id="myThumbs" 
clipAndEnableScrolling="true" height="187" 
itemRenderer="components.CustomRenderer4Thumbs" 
d:userLabel="hos_RepeatedItem" width="320" x="110" y="2" />

Код для рендерера:

<fx:Script>
    <![CDATA[
        [Bindable] public var counter:Number=0;
        protected function image1_clickHandler(event:MouseEvent):void
        {
            if(counter==0)
            {
            this.currentState="selected";
            moveIn.play([offsets]);
            counter=1;
            }
            else if(counter==1)
            {
            mx.core.FlexGlobals.topLevelApplication.currentState="DescriptionPagefromThumbs";
            counter=0;
            }
        }
    ]]>
</fx:Script>
<fx:Declarations>
    <s:Animate id="Larger"  duration="250">     
        <s:motionPaths>
            <s:SimpleMotionPath property="height" valueFrom="50" valueTo="100" />   
            <s:SimpleMotionPath property="width" valueFrom="50" valueTo="100" />    
        </s:motionPaths>
    </s:Animate>
    <s:Animate id="moveIn" target="{offsets}" duration="650">
        <s:SimpleMotionPath property="scaleX" />
        <s:SimpleMotionPath property="scaleY" />
        <s:SimpleMotionPath property="x" />
        <s:SimpleMotionPath property="y" />
    </s:Animate>
</fx:Declarations>
<s:states>
    <s:State name="normal"/>
    <s:State name="hovered"/>
    <s:State name="selected"/>
</s:states>  
<mx:Image height.hovered="50" click="image1_clickHandler(event)" id="image1" maintainAspectRatio="true" smoothBitmapContent="true" source="{data.Thumb}" d:userLabel="hos_RepeatedItemTH" width.hovered="50" x="0" y="0"/>

Список XML содержит проекты, каждый из которых содержит как минимум заголовок, большой палец и текстовый пример.

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 18 июля 2012

Вместо того, чтобы использовать <s:DataGroup/> для разметки Thumbs, просто продолжайте и используйте <s:List/>.Вы можете установить макет компонента списка для использования <s:BasicLayout/> и установить borderVisible="false" и contentBackgroundAlpha="0" на List так, чтобы он выглядел точно так же, как DataGroup, однако теперь у вас будет доступ к selectedItem свойство List.

Например:

<s:List id="myThumbs" includeIn="ThumbnailList" 
        dataProvider="{myList}" 
        borderVisible="false" contentBackgroundAlpha="0"
        alpha="0.72" blendMode="luminosity"  
        x="110" y="2" width="320" height="187" 
        itemRenderer="components.CustomRenderer4Thumbs" >
    <s:layout>
        <s:BasicLayout/>
    </s:layout>
</s:List>
...