0

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

或类似的东西。

我希望你能帮助我。

4

1 回答 1

1

您似乎对 Spark 剥皮模型的工作方式有很深的误解。您不应该从皮肤中引用 hostComponent 来显示项目。您应该在皮肤中创建元素;并使用相同的名称。所以如果 hostComponent 有一个这样定义的皮肤部分:

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

皮肤应该是这样的:

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

我建议阅读有关Spark Skinning的这些信息,并学习Component LifeCycle

于 2013-07-25T11:40:07.787 回答