У меня есть пользовательский компонент ExpandCollapseMenu , который расширяет SkinnableContainer .Этот компонент может иметь состояние «нормальный» или «расширенный».
Внутри этого компонента у меня есть кнопки с другим скином, основанным на состоянии ExpandCollapseMenu.
Это прекрасно работает при определении кнопок внутри класса скина ExpandCollapsMenu:
<s:Group id="contentGroup" top="20" left="10" right="10" bottom="10">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<component:ExpandCollapseMenuButton label="Foo" skinClass.expanded="component.ExpandCollapseMenuButtonExpandedSkin" skinClass.normal="component.ExpandCollapseMenuButtonSkin" />
</s:Group>
Но я не хочу определять кнопки внутри класса скина ExpandCollapsMenu, я хочу определить их там, где я использую ExpandCollapseMenu.Например:
<component:ExpandCollapseMenu skinClass="component.ExpandCollapseMenuSkin">
<component:ExpandCollapseMenuButton label="Foo" />
</component:ExpandCollapseMenu>
На этом уровне я не могу сослаться на skinclass.expanded , но у меня все получилось, используя CSS следующим образом:
component|ExpandCollapseMenu:expanded component|ExpandCollapseMenuButton {
skinClass: ClassReference("component.ExpandCollapseMenuButtonExpandedSkin");
}
component|ExpandCollapseMenu:normal component|ExpandCollapseMenuButton {
skinClass: ClassReference("component.ExpandCollapseMenuButtonSkin");
}
Это хороший способ изменить скин в зависимости от состояния родительских контейнеров?Или есть лучший способ?