代码之家  ›  专栏  ›  技术社区  ›  Marcus Stade Quentin

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

  •  0
  • Marcus Stade Quentin  · 技术社区  · 15 年前

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

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

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

    3 回复  |  直到 15 年前
        1
  •  6
  •   Christian Nunciato    15 年前

    我不完全确定我是否理解这个问题,但是如果您询问是否可以用MXML声明字典,是的,您可以;下面是一些演示用MXML声明的字典的代码,以及一个显示如何动态向字典添加项的表单:

    <?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>
    

    希望有帮助!如果我完全错过了这一点,再发回来,我会看看我是否能帮上忙。

        2
  •  1
  •   Wouter Coekaerts    15 年前

    如果导入正确的命名空间,则可以

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

    但我看不出这样做的好理由。与普通对象(或<mx:model>)相比,字典的优势在于,您可以使用字符串以外的对象作为键。但不能在MXML中编写非字符串密钥。

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

        3
  •  0
  •   CookieOfFortune    15 年前

    不,我不认为字典绑定到MXML。

    你真的需要一本字典来完成你想要完成的工作吗?

    推荐文章