我有一个SkinnableComponent:
public class ContentView extends SkinnableComponent
{
[Bindable]
public var titleBar:IVisualElement;
public function ContentView(pContentXML:XML)
{
this.setStyle("skinClass", ContentViewSkin );
}
}
现在我想在mxml皮肤文件中显示titleBar。
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Metadata>
[HostComponent("EMM.App2Go.Viewer.Component.ContentView")]
</fx:Metadata>
<s:DataGroup width="100%" >
<s:dataProvider>
<s:ArrayList source="{hostComponent.titleBar}" />
</s:dataProvider>
</s:DataGroup>
你可以看到我使用DataGroup进行了管理,但这有点难看,而且我正在考虑一种更简单的方法,比如
<fx:Object source="hostComponent.titleBar" />
或类似的东西。
我希望你能帮助我。
答案 0 :(得分:1)
您似乎对Spark SKinning模型的工作方式存在深刻的误解。您不应该从皮肤引用hostComponent以显示项目。你应该在皮肤中创建元素;并使用相同的名称。因此,如果hostComponent具有如下定义的外观部件:
[Bindable]
[SkinPart]
public var titleBar:IVisualElement;
皮肤应该是这样的:
<s:DataGroup width="100%" id="titleBar" >
</s:DataGroup>
我建议您在Spark Skinning上阅读这些信息,并了解Component LifeCycle。