我想创建一个MXML容器组件,它具有一些自己的chrome - 标准查询显示等,并且支持向其添加子组件。与现有的mx:Panel类很相似,它包含一个标题标签,但就像添加子项一样,它就像一个普通的mx:Box。
最简单的方法是什么?
修改
要清楚,我希望能够使用MXML扩展容器,因此“多个视觉孩子”问题是相关的。
答案 0 :(得分:1)
扩展容器并添加标题标签。可能<mx:Canvas/>
可以在这里工作。将标题设为公共变量,并为标签的 styleName 添加变量。
然后覆盖addChild()
方法,以便将添加的任何子项添加到您的容器中。
当您放置Box元素时,为您的标题留出足够的空间(即,为其y属性提供足够的空间。如果没有标题,您可能想要回收该空间。
这是基础知识。根据您的内心定制。
编辑添加:我首先创建一个ActionScript类,扩展我所定位的容器,并添加“furniture” - 类将始终使用的项目,如您的案例中的title - 通过覆盖{{1}并为这些项目调用createChildren
。从此开始调用super.addChild(item)
,即使在MXML标记中,也会将项目添加到内部容器中。
答案 1 :(得分:0)
我们这样做是为了各州。
我们将基本容器的chrome置于某个状态(在mx:AddChild元素中),然后在创建控件时使用initialize事件切换到该状态。然后将所有铬添加到容器中。
这解决了多组视觉儿童问题。
这种方法的缺点是:
编辑基地的后代时,您看不到镶边。
您无法直接访问后代组件中的父级chrome控件,因为它们在编译时不存在(相反,您需要在后代可以访问的基础上定义属性,方法或事件)
然而,它对我们很有用。