我放弃。希望我只是错过了一些简单的事情,但我觉得我正在努力让它发挥作用。我想要的只是一个自定义的“向导”组件,它的子组件放置在 ViewStack 中,在 ViewStack 下方有一个下一步和后退按钮。以下是一些代码摘录来说明我的方法:
WizardGroup.as:
[SkinPart(required="true")]
public var nextBt:Button = new Button();
[SkinPart(required="true")]
public var backBt:Button = new Button();
[SkinPart(required="true")]
public var stack:ViewStackSpark = new ViewStackSpark();
WizardGroupSkin.mxml:
<s:VGroup width="100%" height="100%"
paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10">
<container:ViewStackSpark id="stack" width="100%" height="100%">
<s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0"/>
</container:ViewStackSpark>
<s:HGroup horizontalAlign="right" width="100%">
<s:Button id="nextBt" label="Next" enabled="{hostComponent.permitNext}" enabled.last="false"/>
<s:Button id="backBt" label="Back" enabled="{hostComponent.permitBack}" enabled.first="false"/>
</s:HGroup>
</s:VGroup>
虽然这非常接近工作,但主要问题是 WizardGroup 组件的子组件没有添加为视图堆栈的子组件。相反,它们被添加为 contentGroup 的子项。所以 viewstack 永远只有一个孩子:contentGroup。
我还尝试了将视图堆栈的内容绑定到 contentGroup 的子项的方法,但是使用 Spark 容器,无法访问子项数组或元素数组(即没有 contentGroup.getChildren() 或contentGroup.getElements())
有任何想法吗?谢谢大家。