代码之家  ›  专栏  ›  技术社区  ›  Marplesoft

为什么使用Flex Tree组件的分支节点会忽略iconField?

  •  1
  • Marplesoft  · 技术社区  · 16 年前

    我正在使用Flex树的iconField属性动态设置节点应该使用的图标。这适用于叶节点,但对于分支节点,它似乎不尊重我的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>
    

    3 回复  |  直到 16 年前
        1
  •  1
  •   susichan    16 年前

    我认为它可以通过一个图标功能来完成。。。这看起来像是你想要的:

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

        2
  •  1
  •   99miles    16 年前

    <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%" />
    

        3
  •  0
  •   99miles    16 年前

    几乎! 您需要设置folderOpenIcon和folderClosedIcon,如下所示:

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