我正在處理一個自定義Flex 4組件,它是兩個現有Flex組件的聚合。我希望能夠爲組件指定自己的自定義屬性以及通過MXML訪問現有的公共子組件屬性。例如,我可能想要調整標籤和文本輸入的字體顏色或樣式。什麼是MXML語法來分配自定義MXML組件的子組件屬性?
它彙集一個標籤和文本輸入的玩具組件:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
>
<fx:Script>
<![CDATA[
[Bindable] public var prompt:String = "default prompt";
[Bindable] public var input:String = "default inpput";
]]>
</fx:Script>
<s:VGroup>
<s:Label id="cLabel" text="{prompt}" />
<s:TextInput id="cTextInput" text="{input}" />
</s:VGroup>
</s:Group>
然後在我的主要應用程序,我想通過MXML訪問子組件的公共接口,而無需重新編寫了一通通過每個綁定。喜歡的東西:
...
<local:myInput prompt="name" input="please enter name">
<local:cLabel color="0xffffff" />
<local:CTextInput fontStyle="bold" />
</local:myInput>
在ActionScript一個可以爲所有的公共屬性做到這一點很容易:
myInput.cLabel.color = "0xffffff";
但我難倒關於語法的MXML。這似乎應該很容易,但我還沒有找到答案。任何幫助不勝感激。
感謝您澄清樣式值,我應該使用一個更好的例子,這取決於屬性。 IMO爲集合類的每個接口編寫getter和setter會導致耦合更緊密,比如果只能組合正交類。我想我只需要習慣寫很多鍋爐板,如果我想組合組件。另一個選擇是創建一個MXML模板類,並將所有組件作爲參數傳入?像Flex Form類一樣? – crcarlson 2011-06-04 21:24:19