У меня есть следующий компонент панели называется AdvancedPanel с controlBarContent:Как наследовать состояния с помощью 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>
Я создал вторую панель, которая называется CustomAdvancedPanel на основе AdvancedPanel, так как я не хочу, чтобы переобъявить в controlBarContent
<!-- CustomAdvancedPanel.mxml -->
<local:AdvancedPanel>
<s:Button includeIn="edit" label="Extra edit button" />
</local:AdvancedPanel>
Это не работает, поскольку состояние «edit» в 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 внутри компонент приложения показывает пустую панель с кнопкой «Go для редактирования». Но когда я нажимаю на него, кнопка «Extra edit» становится видимой, но кнопка «Show in edit» внутри панели управления не работает.
Когда панель CustomAdvancedPanel пуста, без состояний с повторением и «Дополнительная кнопка редактирования» панель работает нормально.
Я думаю, что это потому, что объект State, объявленный в AdvancedPanel, не совпадает с CustomAdvancedPanel, поэтому состояние отличается, даже если оно имеет одинаковое имя. Однако. Я не могу использовать состояния AdvancedPanel внутри CustomAdvancedPanel без (re) объявить их в mxml.
Есть ли способ достичь такого рода повторного использования состояния? Или есть лучший способ получить тот же результат?
+1 для хорошо сформулированных вопрос, с образцами. – JeffryHouser