在 MXML 中,可以声明对象实例,甚至是动态对象,如下所示:
<mx:Object>
<mx:foo>bar</mx:foo>
<mx:bar>foo</mx:bar>
</mx:Object>
是否可以在不使用某些 MXML 包装类的情况下对 Dictionary 类做同样的事情?
在 MXML 中,可以声明对象实例,甚至是动态对象,如下所示:
<mx:Object>
<mx:foo>bar</mx:foo>
<mx:bar>foo</mx:bar>
</mx:Object>
是否可以在不使用某些 MXML 包装类的情况下对 Dictionary 类做同样的事情?
我不完全确定我理解这个问题,但如果你问是否可以在 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>
希望有帮助!如果我完全错过了重点,请回复,我会看看我是否可以提供帮助。
如果您导入正确的命名空间,这是可能的
<mx:Application ... xmlns:utils="flash.utils.*">
<utils:Dictionary>
<utils:foo>bar</utils:foo>
...
</utils:Dictionary>
...
但我认为没有充分的理由这样做。Dictionary 相对于您通常使用的普通对象(或 <mx:Model>)的优势在于,您可以使用 String 以外的对象作为键。但是您不能在 MXML 中编写非字符串键。
换句话说:是的,您可以创建一个,但没有意义。
不,我不认为 Dictionary 绑定到 MXML。
你真的需要一本字典来完成你想要完成的事情吗?