我有以下名为 AdvancedPanel 的面板组件,带有 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>
我基于 AdvancedPanel 创建了第二个面板,称为 CustomAdvancedPanel,因为我不想重新声明 controlBarContent
<!-- 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 会显示一个带有“Go to edit”按钮的空面板。但是当我单击它时,“额外的编辑按钮”变得可见,但 controlBar 内的“在编辑中显示”按钮不可见。
当 CustomAdvancedPanel 为空,没有重新声明的状态和“额外的编辑按钮”时,面板工作得很好。
我认为是因为 AdvancedPanel 中声明的 State 对象与 CustomAdvancedPanel 中声明的对象不同,所以状态不同,即使它们具有相同的名称。然而。如果没有在 mxml 中(重新)声明它们,我就不能在 CustomAdvancedPanel 中使用 AdvancedPanel 的状态。
有没有办法实现这种状态重用?还是有更好的方法来获得相同的结果?