controlBarContent を持つ AdvancedPanel という次のパネル コンポーネントがあります。
<!-- AdvancedPanel.mxml -->
<s:Panel>
<s:states>
<s:State name="normal" />
<s:State name="edit" />
</s:states>
<s:controlBarContent>
<s:Button
includeIn="edit"
label="Show in edit"
/>
<s:Button
label="Go to edit"
click="{currentState='edit'}"
/>
</s:controlBarContent>
</s:Panel>
controlBarContent を再宣言したくないので、AdvancedPanel に基づいて CustomAdvancedPanel と呼ばれる 2 番目のパネルを作成しました。
<!-- CustomAdvancedPanel.mxml -->
<local:AdvancedPanel>
<s:Button includeIn="edit" label="Extra edit button" />
</local:AdvancedPanel>
CustomAdvancedPanel の「編集」状態がコンパイラに従って宣言されていないため、これは機能しません。次のように、CustomAdvancedPanel.mxml で編集状態を再宣言する必要があります。
<!-- CustomAdvancedPanel.mxml with edit state redeclared -->
<local:AdvancedPanel>
<local:states>
<s:State name="normal" />
<s:State name="edit" />
</local:states>
<s:Button includeIn="edit" label="Extra edit button" />
</local:AdvancedPanel>
アプリケーション コンポーネント内で CustomAdvancedPanel を使用すると、[編集に移動] ボタンのある空のパネルが表示されます。しかし、クリックすると「追加編集ボタン」が表示されますが、controlBar 内の「編集で表示」ボタンは表示されません。
CustomAdvancedPanel が空の場合、再宣言された状態と「追加の編集ボタン」がなければ、パネルは正常に機能します。
AdvancedPanel で宣言されている State オブジェクトが CustomAdvancedPanel と同じではないため、同じ名前であっても状態が異なるためだと思います。でも。mxml で (再) 宣言しないと、CustomAdvancedPanel 内で AdvancedPanel の状態を使用できません。
この種の状態の再利用を実現する方法はありますか? または、同じ結果を得るためのより良い方法はありますか?