如何在Flex 4中创建值感知组合框?

时间:2011-03-31 17:07:05

标签: flex flex4

根据我的经验,如果你在属性中解决了对象,那么Flex中的组合框真的很难使用。在Flex 3.5中,我们对组合框有一个工作扩展,它将填充selectedValue属性(并允许更改selectedIndex)。

以下是使用以下内容之一的简单示例:

<c:ValueComboBox valueField="country_code">
    <mx:Script>
        <![CDATA[
        public function get selectedCountry(): String {
            return this.selectedValue; // This property is added by ValueComboBox
        }

        public function set selectedCountry(v: String): void {
            this.selectedValue = v;
        }
        ]]>
    </mx:Script>
    <c:dataprovider>
        <mx:ArrayCollection>
            <mx:Object label="Canada" country_code="ca"/>
            <!-- ... -->
        </mx:ArrayCollection>
    </c:dataprovider>
</c:ValueComboBox>

然而,这已经停止在Flex 4中工作了。发生的事情是我们现有的组件通过覆盖set selectedIndex()函数来驱动它的更改,当组合框的选定索引发生变化时,不再调用该函数(wtf?)。

是否有适用于Flex 4的可识别工作值的组合框实现?

为了便于参考,这里是基值组合框类。 https://gist.github.com/5639c7b2439b03748e2e

1 个答案:

答案 0 :(得分:2)

Flex 4 ComboBox现在使用userProposedSelectedIndex属性来存储所选索引的时间值,直到ComboBox关闭。然后,selectedIndex属性不会使用selectedIndex设置,而是使用以下签名调用setSelectedIndex方法:

mx_internal function setSelectedIndex(value:int, dispatchChangeEvent:Boolean = false):void

我建议你应该覆盖这个方法,以确保选择的索引设置正确。

希望这有帮助。