绑定到数组中对象的特定属性

时间:2009-07-22 22:03:09

标签: flex flash actionscript-3 data-binding actionscript

我正在使用Flex创建一个小表单。我目前所拥有的只是一个List组件,我想填充一个字体名称列表。

我使用 Font.enumerateFonts(true); 获取字体。这将返回 flash.text.Font 对象的数组。

Font对象具有 fontName 属性,该属性是该字体名称的字符串。

我的问题是我无法弄清楚如何将List的dataProvider绑定到Array中每个Font对象的fontName属性。

有没有办法只用绑定来做到这一点?而不是通过循环Font对象创建一个新的字符串数组?

1 个答案:

答案 0 :(得分:3)

您可能正在寻找List控件的labelField属性。这是一个有效的例子:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="onInitialize()">

    <mx:Script>
        <![CDATA[

            import mx.collections.ArrayCollection;

            [Bindable]
            private var fonts:ArrayCollection;

            private function onInitialize():void
            {
                fonts = new ArrayCollection(Font.enumerateFonts(true));
            }

        ]]>
    </mx:Script>

    <mx:List dataProvider="{fonts}" labelField="fontName" />

</mx:Application>

另请注意,我使用ArrayCollection进行绑定(而不是数组),因为Arrays不支持以您期望的方式进行绑定。

希望有所帮助!如有任何问题,请随时回复。