它比容易得多:用於該用途的情況下,你應該簡單地擴展Group
。爲了使事情變得更簡單,在MXML中編寫您的組合組件。
創建一個新文件MyBlock.mxml
(例如在com/mydomain/components
),並添加以下代碼:
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:TextInput .. />
<s:BitmapImage .. />
</s:Group>
現在只需使用這個組件:
<c:MyBlock />
其中c
命名空間的定義爲xmlns:c="com.mydomain.components.*"
使用此類的文檔的根節點。例如:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:c="com.mydomain.components.*">
<c:MyBlock />
</s:Application>
現在假設你想在每塊不同的文字,你就不得不暴露的屬性。要做到這一點,讓我們來添加一個label
屬性MyBlock
:
<fx:Declarations>
<fx:String id="label" />
</fx:Declarations>
爲了使TextInput
顯示什麼在該變量時,它改變了我們使用時綁定像這樣:
<s:TextInput text="{label}" />
的最後一個組件看起來如下所示:
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Declarations>
<fx:String id="label" />
</fx:Declarations>
<s:TextInput text="{label}" .. />
<s:BitmapImage .. />
</s:Group>
現在您可以使用不同的文本創建多個MyBlock
實例:
<c:MyBlock label="hello" />
<c:MyBlock label="world" />
請注意,如果你經常使用MyBlock的更多的是一個類似列表的方式,你可能要考慮使用List
組件與定義ItemRenderer,而不是一遍一遍使用MyBlock
。
非常感謝!實際上,我想到的是一個布爾屬性,所以當屬性設置爲true時,MyBlock將顯示一個圖像,另一個圖像顯示爲false。我想我可以用同樣的方式開展工作,謝謝! –