Adobe Flex - 在MXML中显示HostComponent的可视元素

时间:2013-07-25 11:16:04

标签: flex bind flex4.5 skin displayobject

我有一个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" />

或类似的东西。

我希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

您似乎对Spark SKinning模型的工作方式存在深刻的误解。您不应该从皮肤引用hostComponent以显示项目。你应该在皮肤中创建元素;并使用相同的名称。因此,如果hostComponent具有如下定义的外观部件:

[Bindable]
[SkinPart]
public var titleBar:IVisualElement;

皮肤应该是这样的:

<s:DataGroup width="100%" id="titleBar" >
</s:DataGroup>

我建议您在Spark Skinning上阅读这些信息,并了解Component LifeCycle