MXML中的字典声明,是否可能?

时间:2009-06-02 15:06:29

标签: flex mxml

在MXML中,可以声明对象实例,即使对于动态对象也是如此:

<mx:Object>
    <mx:foo>bar</mx:foo>
    <mx:bar>foo</mx:bar>
</mx:Object>

是否可以在不使用某些MXML包装类的情况下对Dictionary类进行相同的操作?

3 个答案:

答案 0 :(得分:6)

我不完全确定我理解这个问题,但是如果你问是否可以用MXML声明字典,是的,你可以;这里有一些代码演示了在MXML中声明的Dictionary,以及一个显示如何动态地将项添加到字典中的表单:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:utils="flash.utils.*" creationComplete="onCreationComplete()">

    <mx:Script>
        <![CDATA[

            private function onCreationComplete():void
            {
                showContents();
            }

            private function onBtnClick():void
            {
                addProperty();
                showContents();
            } 

            private function showContents():void
            {
                txt.text = "";

                for (var k in d) 
                    txt.text += k + ": " + d[k] + "\n"
            }

            private function addProperty():void
            {
                d[pname.text] = pvalue.text;

                pname.text = ""; 
                pvalue.text = "";

                pname.setFocus();
            }

        ]]>
    </mx:Script>

    <mx:VBox>
        <mx:Label text="Dictionary Contents" />
        <mx:TextArea id="txt" width="350" height="200" />
        <mx:HBox>
            <mx:VBox>
                <mx:Label text="New Property Name" />
                <mx:TextInput id="pname" text="pets" />
            </mx:VBox>
            <mx:VBox>
                <mx:Label text="New Property Value" />
                <mx:TextInput id="pvalue" text="dog, cat, fish" />
            </mx:VBox>
        </mx:HBox>
        <mx:Button id="btn" label="Add" click="onBtnClick()" />
    </mx:VBox>

    <utils:Dictionary id="d">
        <utils:fname>Chris</utils:fname>
        <utils:lname>Nunciato</utils:lname>
    </utils:Dictionary>

</mx:Application>

希望有所帮助!如果我完全错过了这一点,请回复,我会看看能否提供帮助。

答案 1 :(得分:1)

如果您导入正确的命名空间

,则可能
    <mx:Application ... xmlns:utils="flash.utils.*">
        <utils:Dictionary>
            <utils:foo>bar</utils:foo>
            ...
        </utils:Dictionary>
        ...

但我认为没有充分理由这样做。与通常使用的普通对象(或&lt; mx:Model&gt;)相比,Dictionary的优点是可以使用除String之外的对象作为键。但是你不能在MXML中编写非String键。

换句话说:是的,你可以创造一个,但没有意义。

答案 2 :(得分:0)

不,我不认为词典与MXML绑定。

你真的需要一本字典来表达你想要完成的事情吗?