2013-07-25 25 views
0

我有一個SkinnableComponent:Adob​​e Flex的 - 顯示來自HostComponent視覺元素在MXML

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> 

,你可以看到我用DATAGROUP管理它,但是這是一種醜,我在想一個更簡單的方法來做到這一點像

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

或類似的東西那。

我希望你能幫助我。

回答

1

您似乎對Spark SKinning Model應該如何工作有着深刻的誤解。您不應該從外觀引用hostComponent以顯示項目。你應該在皮膚中創建元素;並使用相同的名稱。所以,如果hostComponent區域有這樣定義的皮膚部分:

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

皮膚應該是這樣的:

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

我建議通過這個信息Spark Skinning閱讀,同時還學習Component LifeCycle