<!-- 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>
这样做不起作用,因为CustomAdvancedPanel中的“edit”状态未按照编译器的要求声明。我必须在CustomAdvancedPanel.mxml中重新声明edit状态如下:
<!-- 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会显示一个空面板和“转到编辑”按钮。但是当我点击它时,“额外的编辑按钮”变为可见,但控制栏内的“在编辑中显示”按钮不可见。
当CustomAdvancedPanel为空时,没有重新声明状态和“额外编辑按钮”,该面板运行正常。
我认为这是因为在AdvancedPanel中声明的State对象与CustomAdvancedPanel不同,所以状态不同,即使它们具有相同的名称。然而,我不能在mxml中使用AdvancedPanel的状态来内置CustomAdvancedPanel而不重新声明它们。
是否有任何方法实现这种状态重用?或者有没有更好的方法来获得相同的结果?