通过MXML扩展自定义组件

14

我的需求是:创建一个带有一些子元素的 MXML 组件,然后通过 MXML 扩展它来创建一个带有更多子元素的新组件,而不会丢失原始集合。

换句话说

创建一个名为 bc.mxml 的组件。

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">

    <s:Button id="b1" label="button1"/>
</s:BorderContainer>

然后将其扩展到一个独立的组件mc.mxml

<?xml version="1.0" encoding="utf-8"?>
<borderContainerX:bc xmlns:fx="http://ns.adobe.com/mxml/2009" 
                     xmlns:s="library://ns.adobe.com/flex/spark" 
                     xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:borderContainerX="borderContainerX.*">

    <s:Button id="b2" y="100" label="button2"/>
</borderContainerX:bc>

我曾经看过一些有关如何获得一个有两个按钮组件的线程。

我看到过一些关于这不可能(1)或关于完成这个任务的解决方法的线程(23),并且一直在想是否随着Flex 4的出现有什么改变,或者我们仍然被困在这些解决方法中。线程3的最后回复似乎暗示了Flex 4修复这一切的可能性?


为什么不使用MXML和ActionScript的混合?在第二个组件的createChildren()方法中创建您的第二个按钮。 - JeffryHouser
3
当然。我只是惊讶于纯MXML仍然无法工作。老实说,通过MXML设置组件非常方便,这似乎很奇怪。 - fred august
1个回答

11

在Flex 4中,使用具有多个内容区域定义的皮肤来完成此类型任务更加优雅:使用多个内容区域构建Flex 4容器 http://saturnboy.com/2010/07/multiple-content-area-containers/ - JabbyPanda
我尝试了这个(包括设置mxmlContent),但对我来说不起作用。有什么线索可以解释为什么会这样吗? - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接