Wie erbe ich Zustände mit mxml?

Ich habe die folgende Panel-Komponente namens AdvancedPanel mit controlBarContent:

<!-- 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>

Ich habe ein zweites Panel namens CustomAdvancedPanel erstellt, das auf dem AdvancedPanel basiert, da ich den controlBarContent @ nicht neu deklarieren möcht

<!-- CustomAdvancedPanel.mxml -->
<local:AdvancedPanel>
  <s:Button includeIn="edit" label="Extra edit button" />
</local:AdvancedPanel>

Dies funktioniert nicht, da der Bearbeitungsstatus in CustomAdvancedPanel laut Compiler nicht deklariert ist. Ich muss den Bearbeitungsstatus in CustomAdvancedPanel.mxml wie folgt neu deklarieren:

  <!-- 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>

Wenn Sie das CustomAdvancedPanel in einer Anwendungskomponente verwenden, wird ein leeres Bedienfeld mit der Schaltfläche "Zum Bearbeiten" angezeigt. Wenn ich darauf klicke, wird die Schaltfläche "Zusätzliche Bearbeitung" sichtbar, die Schaltfläche "In Bearbeitung anzeigen" in der Steuerleiste jedoch nicht.

Wenn das CustomAdvancedPanel leer ist, ohne neu deklarierte Status und "Extra Edit Button", funktioniert das Panel einwandfrei.

Ich glaube, das liegt daran, dass das in AdvancedPanel deklarierte Statusobjekt nicht mit CustomAdvancedPanel identisch ist. Daher ist der Status unterschiedlich, auch wenn sie denselben Namen haben. Jedoch. Ich kann die Status von AdvancedPanel nicht in CustomAdvancedPanel verwenden, ohne sie in mxml (neu) zu deklarieren.

ibt es eine Möglichkeit, diese Art der staatlichen Wiederverwendung zu erreichen? Oder gibt es einen besseren Weg, um das gleiche Ergebnis zu erzielen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage