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

Apache flex Adobe Flex-在MXML中显示HostComponent中的可视元素,apache-flex,bind,flex4.5,skin,displayobject,Apache Flex,Bind,Flex4.5,Skin,Displayobject,我有一个Skinnable组件: public class ContentView extends SkinnableComponent { [Bindable] public var titleBar:IVisualElement; public function ContentView(pContentXML:XML) { this.setStyle("skinClass", ContentViewSkin ); } }

我有一个Skinnable组件:

public class ContentView extends SkinnableComponent
{       
    [Bindable]
    public var titleBar:IVisualElement;

    public function ContentView(pContentXML:XML)
    {
        this.setStyle("skinClass", ContentViewSkin );
    }
}
现在我想在mxml皮肤文件中显示标题栏

    <?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>  

[主机组件(“EMM.App2Go.Viewer.Component.ContentView”)]

正如你所看到的,我用一个数据组来管理它,但这有点难看,我正在考虑一种更简单的方法来这样做

<fx:Object source="hostComponent.titleBar" />

或者类似的


我希望您能帮助我。

您似乎对Spark蒙皮模型的工作原理有着深刻的误解。为了显示项目,不应该从外观引用hostComponent。你应该在皮肤中创建元素;并使用相同的名称。因此,如果hostComponent的蒙皮部分定义如下:

[Bindable]
[SkinPart]
public var titleBar:IVisualElement;
<s:DataGroup width="100%" id="titleBar" >
</s:DataGroup>
皮肤应该有这样的东西:

[Bindable]
[SkinPart]
public var titleBar:IVisualElement;
<s:DataGroup width="100%" id="titleBar" >
</s:DataGroup>

我建议你通读这篇文章,同时也要了解文章的内容