2011-04-01 15 views
0

我有以下問題:子類化組件隱藏基類可視元素。我怎樣才能避免視覺繼承?

  • 我有擴展個A類:面板。
  • 我有一個延伸的

    <!-- Class A --> 
    <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" > 
    
        <s:Label text="A" /> 
    </s:Panel> 
    
    <!-- Class B --> 
    <controls:A > 
        <s:Label text="B" alpha="0.3" /> 
    </controls:A> 
    

我的直覺告訴我,兩種文本應顯示B類,但我不能讓節目中的文本。

謝謝,

+0

可能重複(http://stackoverflow.com/questions/4888155/extending-mxml-custom-components-via-mxml) – Dan 2011-04-01 21:58:56

回答

0

您不能將子元素兩次添加到UIComponent。因此,類A擴展了Panel,並向Panel實例內的children數組添加了一個標籤。而B延伸A,但是你不能再增加更多的孩子。這只是MXML的限制。理論上你可以做到這一點,但當你這樣做時,Flex會拋出異常。

但是,有辦法解決這個問題。在設計基類時,您必須在Flex中計劃這種類型的擴展。這涉及到模板組件。基類將用作允許子類指定UI部分的模板,基類將環繞這些組件。總的來說,我發現這個技術對創建其他用戶可以定製的可重用視圖非常重要。

退房這篇文章,你會如何做: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf68a49-7ffa.html

您甚至可以添加元數據[DefaultProperty]元數據標籤的基類,所以你的用戶有他們增加對孩子陣列就像幻覺默認的MXML會。 [通過MXML MXML擴展的自定義組件]的

http://dispatchevent.org/mims/flex-manual-blues/

+0

我知道有一個更簡單在Flex 4中這樣做的方法嗎?你碰巧知道它嗎? – Dan 2011-04-08 18:39:53