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の子として追加されます。したがって、ビュースタックには常にcontentGroupという1つの子しかありません。

ビュースタックのコンテンツを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 に答える