2

我放弃。希望我只是错过了一些简单的事情,但我觉得我正在努力让它发挥作用。我想要的只是一个自定义的“向导”组件,它的子组件放置在 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())

有任何想法吗?谢谢大家。

4

1 回答 1

2

我终于弄明白了。诀窍是将 WizardGroup 的默认属性设置为我称之为“内容”的公共成员数组

[DefaultProperty("content")]
public class WizardGroup extends TitleWindow
{
    [SkinPart(required="true")]
    public var nextBt:Button = new Button();

    [SkinPart(required="true")]
    public var backBt:Button = new Button();

    [Bindable]
    public var content:Array;

然后在皮肤中,将 viewstack 的内容绑定到 hostComponent 的内容数组:

        <s:VGroup width="100%" height="100%"
                  paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10">
            <container:ViewStackSpark id="stack" width="100%" height="100%" content="{hostComponent.content}"/>
            <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>
于 2010-06-24T06:47:30.437 回答