如何将MXML文件内嵌到另一个MXML文件中?

1.2*_*tts 5 apache-flex mxml flex4

我想在MXML文件中包含一个MXML文件,就像使用include指令在AS3中包含外部文件一样.使用include伪指令在编译时将外部文件中的代码放入原始文件中,并将其置于同一范围内.

例如,

Application.mxml:

<Application>

    <source="external.mxml"/>

</Application>
Run Code Online (Sandbox Code Playgroud)

External.mxml:

<Styles/>

<Declarations>
    <Object id="test"/>
</Declarations>
Run Code Online (Sandbox Code Playgroud)

我需要将此代码/ mxml/xml保留在原始范围内的外部文件中.不要问我为什么要这样做.

另一个例子.这是我当前的代码(简化)全部在1 mxml文件中:

...

File1.mxml
<Button click="clickHandler()"/>

<Script>
public function clickHandler():void {

}
</Script>
Run Code Online (Sandbox Code Playgroud)

...

这就是我想要的:

...

File1.mxml
<Group>

    <source="File2.mxml"/>

    <Button click="clickHandler()"/>

<Group>


File2.mxml
<Script>
public function clickHandler():void {
    trace(this); // File1.mxml
}
</Script>
Run Code Online (Sandbox Code Playgroud)

...

我想将我的代码拆分成一个单独的文件......

~~ 更新 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~

虽然不是我要求使用"代码隐藏"方案,但实现了将代码从视图中分离出来的部分功劳.因此,我创建了一个MXML文件,MyGroup.mxml或MyGroup.as,并扩展了包含clickHandler代码的Group.

这个方法的问题是我被锁定到我正在扩展的类类型,硬编码视图.因此,例如,如果我要拆分为单独文件的MXML类是Group,则必须扩展Group.

我已经完成了这项工作的项目,但并不好.人们开始在类后面的代码中设置样式和可视方面或组/查看特定属性,如果我们需要更改它或布局,我们最终将所有这些依赖项放到容器中.它变得一团糟.另外,使用Code Behind,您无法重用它(重用方式包括styles.as被重用).所以这不是一个解决方案,但我想我会提到它.

这是一个示例背后的代码,

MyGroupBehind.mxml:

<Group>

   <Script>
   public function clickHandler():void {
       trace(this); // File1.mxml
   }
   </Script>

</Group>
Run Code Online (Sandbox Code Playgroud)

MyGroupAhead.mxml:

<MyGroupBehind>

    <Button click="clickHandler()"/>

</MyGroupBehind>
Run Code Online (Sandbox Code Playgroud)

Amy*_*hip 1

只需开始输入自定义组件的名称,然后按 Ctrl+Space。代码完成将填充您可能想要添加的可能内容的列表,包括组件的名称。使用向下箭头选择组件的名称,然后按 Enter 键。代码完成将设置名称空间并启动组件的标签。如果您转到该行末尾并输入“/>”(不带引号),瞧!您将拥有一个代表您的自定义 MXML 组件的内联标记。