2012-04-14 11 views
1

BorderContainerクラスを拡張してFlexでカスタムコンポーネントを作成しています。これをメインアプリケーションで使用すると、タグセット内に追加コンテンツを配置することができます。FlexカスタムコンポーネントMore Inside

<components:CustomComponent title="Hello"> 
    <s:Label text="If you have one enter it below:"/> 
    <mx:Spacer height="15" /> 

    <s:HGroup> 
     <s:TextInput width="250"/> 
     <s:Button label="Submit"/> 
    </s:HGroup> 
</components:CustomComponent> 

これは私のコンポーネント定義は、そのような私はそれを使用するために行く時には、上記タグセット内のコンテンツに置き換えられ<s:Label/>とスタイリング、として、その中のいくつかの追加のものを持っていたことを除いて、うまく動作します。

タグセット内に何も入れていないと、コンポーネントに元々含まれていたコンテンツは置き換えられません。

毎回交換するのではなく、コンポーネントを使用するときにコンポーネントの内部に追加コンテンツを追加する方法はありますか?

ありがとうございました!

答えて

1

「単純に」ではなく、回避する必要があります。 ここでは、ソースコードとサンプルアプリなどの血みどろの詳細、とブログ記事です:あなたのスクリプトはデフォルトの「ダミー」プロパティに設定されている子コンポーネントを傍受するために、要約するとhttp://www.munkiihouse.com/?p=37(ステップ3)

クラス、およびそれらをあなたの「メイン」プロパティ/コンテナに後で追加してください。

主なプロパティは、カスタムコンポーネント定義に既存の要素があるプロパティです。 dummyプロパティは、コンポーネントインスタンスが要素を追加する既定のプロパティです。

幸運。

+0

優秀!リンクありがとうございます! –

+1

@ spryno724このソリューションは技術的には機能しますが、Sparkアーキテクチャは完全に無視されています。はるかにクリーンなアプローチは、単にSkinnableContainerを使用してカスタムスキン(追加のラベルとスタイリングを含むスキン)を作成することです。あなたとかなり似ている状況を説明する[この回答](http://stackoverflow.com/questions/9930740/what-is-the-hostcomponent/9931286#9931286)を見てください。公開するプロパティや追加する特別な動作がないため、SkinnableContainerをサブクラス化する必要があります)。 – RIAstar

+0

ニース!ありがとうございました! –

関連する問題