通过MXML扩展MXML自定义组件

时间:2011-02-03 15:37:01

标签: flex flex4 mxml

我想做的事情:创建一个包含一些子项的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>

并获得一个带有2个按钮的组件。

我已经看到了关于如何实现这一点(1)或解决方法的各种线索(23)并且一直想知道某些事情是否发生了变化随着Flex 4的出现,或者如果我们仍然坚持使用这些变通方法,那么线程3中的最后一个回复似乎暗示了Flex 4修复它的全部内容?

1 个答案:

答案 0 :(得分:11)

在Flex 4中,您必须覆盖“mxmlContent”属性设置器,以便在父类中保留已定义的子项

此博客条目的评论中提供了此类覆盖的一种可能实现

快速提示(Flex 4):再见模板 - 你好mxmlContent

http://www.websector.de/blog/2009/10/02/quick-tip-flex-4-goodbye-templates-hello-mxmlcontent/