Поместив эту кнопку в тег MySectionComponent, вы фактически переопределяете значение свойства 'mxmlChildren' экземпляра MySectionComponent.Следовательно, все дочерние элементы, которые были в базовом классе, исчезают и заменяются одной кнопкой.
Что нужно сделать, чтобы решить эту проблему:
- расширить SkinnableContainer вместо группы
- создайте класс скина (например, MySectionComponentSkin), в который вы скопируете код, который сейчас находится в вашей группе.
- назначьте скин для вашего SkinnableContainer
Как это:
<component:MySectionComponent skinClass="MySectionComponentSkin">
<s:Button id="mybtn"/>
</component:MySectionComponent>
В данном случае отличается то, что при использовании SkinnableContainer все, что вы назначаете для его свойства 'mxmlChildren', будет передано свойству 'mxmlChildren' в 'contentGroup' в его оболочке.
Если у вашего MySectionComponent теперь нет дополнительного кода, вы можете вообще пропустить его и использовать SkinnableContainer напрямую:
<s:SkinnableContainer skinClass="MySectionComponentSkin">
<s:Button id="mybtn"/>
</s:SkinnableContainer>
Но я вижу, что у вас есть «заголовок» в компоненте, поэтому выпотребуется дополнительное кодирование.Ваш MySectionComponent должен выглядеть примерно так:
public class MySectionComponent extends SkinnableContainer {
[Bindable] public var title;
}
И теперь вы можете получить доступ к этому свойству из оболочки.Сначала убедитесь, что обложка знает свой хост-компонент:
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Metadata>
[HostComponent("MySectionComponent")]
</fx:Metadata>
...
Затем получите доступ к свойству title следующим образом:
<s:Label text="{hostComponent.title}" />
и удалите свойство title из класса обложки (как вы, вероятно, скопировали / вставили его вместе с другим кодом).