Ho il seguente componente del pannello chiamato AdvancedPanel con controlBarContent:Come ereditare gli stati con mxml?
<!-- 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>
ho creato un secondo pannello, chiamato CustomAdvancedPanel sulla base del AdvancedPanel dato che non voglio ridichiarare il controlBarContent
<!-- CustomAdvancedPanel.mxml -->
<local:AdvancedPanel>
<s:Button includeIn="edit" label="Extra edit button" />
</local:AdvancedPanel>
Questo non funziona, perché lo stato 'modifica' in CustomAdvancedPanel non è dichiarato in base al compilatore. Devo ridichiarare lo stato di modifica in CustomAdvancedPanel.mxml come segue:
<!-- 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>
Uso del CustomAdvancedPanel all'interno di un componente dell'applicazione mostra un pannello vuoto con il pulsante "Vai per modificare". Ma quando faccio clic, il pulsante "Extra edit" diventa visibile, ma il pulsante "Mostra in modifica" all'interno della barra di controllo non lo fa.
Quando CustomAdvancedPanel è vuoto, senza stati dichiarati e "Pulsante di modifica extra", il pannello funziona correttamente.
Penso che sia perché l'oggetto Stato dichiarato in AdvancedPanel non è lo stesso di CustomAdvancedPanel, quindi lo stato è diverso, anche se hanno lo stesso nome. Però. Non posso usare gli stati di AdvancedPanel all'interno di CustomAdvancedPanel senza (re) dichiararli in mxml.
Esiste un modo per ottenere questo tipo di riutilizzo da parte dello stato? O c'è un modo migliore per ottenere lo stesso risultato?
+1 per domande ben formulate, con campioni. – JeffryHouser