Почему iconField игнорируется для узлов ветвления с компонентом Flex Tree? - PullRequest
1 голос
/ 19 ноября 2009

Я использую свойство iconField дерева Flex для динамической установки значка, который должен использовать узел. Это хорошо работает для конечных узлов, но для ветвящихся узлов он, похоже, не учитывает мой iconField и вместо этого просто показывает узел папки по умолчанию.

Вот простое повторение:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
    <![CDATA[
        [Embed("assets/icon1.png")]
        public var icon1:Class;

        [Embed("assets/icon2.png")]
        public var icon2:Class;
    ]]>
</mx:Script>

<mx:XML id="dp">
    <node label="Sales" icon="icon1">
        <node label="East" icon="icon2"/>
        <node label="West" icon="icon2"/>
    </node>
</mx:XML>

<mx:Tree dataProvider="{dp}" labelField="@label" iconField="@icon"
    width="100%" height="100%" />

</mx:Application>

Что происходит, так это то, что icon2 отображается для узлов East и West, а icon1 не отображается для узла Sales. Как я могу заставить это работать?

Ответы [ 3 ]

1 голос
/ 19 ноября 2009

Я думаю, что это можно сделать с помощью iconFunction ... Похоже, что он делает то, что вы хотите:

http://blog.flexexamples.com/2007/11/15/creating-a-custom-icon-function-on-a-flex-tree-control/

1 голос
/ 19 ноября 2009

Понятно. Сусичан был прав с iconFunction:

<mx:Script>
    <![CDATA[
        [Embed("icon1.png")]
        public var icon1:Class;

        [Embed("icon2.png")]
        public var icon2:Class;

        [Embed("icon3.png")]
        public var icon3:Class;

        private function setIcons(item:Object):Class {
            var iconClass:Class;
            var classType:String = XML(item).attribute("icon");
            if(classType!="")
                return this[classType];
            else
                return null;
        }


    ]]>
</mx:Script>

<mx:XML id="dp">
    <root>
            <node label="Sales" icon="icon1">
                <node label="East" icon="icon3"/>
                <node label="West" icon="icon3"/>
            </node>
            <node label="Non-Sales" icon="icon2">
                <node label="East" icon="icon3"/>
                <node label="West" icon="icon3"/>
            </node>
    </root>
</mx:XML>

<mx:Tree dataProvider="{dp.node}" labelField="@label" iconField="@icon"
         iconFunction="setIcons" showRoot="true"
         width="100%" height="100%" />

0 голосов
/ 19 ноября 2009

Почти! Вам необходимо установить папку OpenIcon и folderClosedIcon следующим образом:

<mx:Tree dataProvider="{dp}" labelField="@label" iconField="@icon"
         folderOpenIcon="{icon3}"
         folderClosedIcon="{icon4}"
         width="100%" height="100%" />
...