Tôi có phần bảng điều khiển sau đây gọi là AdvancedPanel với controlBarContent:Làm thế nào để kế thừa các trạng thái với 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>
Tôi tạo ra một bảng thứ hai, gọi là CustomAdvancedPanel dựa trên AdvancedPanel kể từ khi tôi không muốn redeclare các controlBarContent
<!-- CustomAdvancedPanel.mxml -->
<local:AdvancedPanel>
<s:Button includeIn="edit" label="Extra edit button" />
</local:AdvancedPanel>
này không hoạt động, vì trạng thái 'chỉnh sửa' trong CustomAdvancedPanel không được khai báo theo trình biên dịch. Tôi phải redeclare chỉnh sửa trạng thái trong CustomAdvancedPanel.mxml như sau:
<!-- 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>
Sử dụng CustomAdvancedPanel bên trong một thành phần ứng dụng cho thấy một bảng trống với nút "Go để chỉnh sửa". Nhưng khi tôi nhấp vào nó, nút "Chỉnh sửa bổ sung" sẽ hiển thị, nhưng nút "Hiển thị trong chỉnh sửa" bên trong controlBar thì không.
Khi CustomAdvancedPanel trống, không có trạng thái được khai báo lại và "Nút chỉnh sửa bổ sung", bảng điều khiển hoạt động tốt.
Tôi nghĩ rằng đó là vì đối tượng nhà nước được khai báo trong AdvancedPanel không giống như CustomAdvancedPanel, vì vậy trạng thái khác nhau, ngay cả khi chúng có cùng tên. Tuy nhiên. Tôi không thể sử dụng các trạng thái của AdvancedPanel bên trong CustomAdvancedPanel mà không cần (lại) khai báo chúng trong mxml.
Có cách nào để đạt được loại tái sử dụng không? Hoặc là có một cách tốt hơn để có được kết quả tương tự?
+1 cho câu hỏi được nói rõ, với mẫu. – JeffryHouser