2010-06-02 56 views
2

是否可以使用數據綁定爲MXML中定義的UIComponent的width屬性設置百分比值?Flex - 使用MXML代碼中的百分比綁定寬度屬性

我儘量做到的是這樣的(不工作):

<s:Button width="{buttonWidth}%"/> 


我知道,使用比例爲MXML widthheight性質是一種在Flex一個黑客攻擊SDK,因爲它們應該只接受數值,但是由於percentWidth和percentHeight在MXML中不可用,所以我很困難=/

我真的很想避免使用代碼來做這麼簡單的事情,以保持我的代碼清晰可讀BLE。

有人知道如何做到這一點線索?

回答

0

你可以擴展Button類(也許稱之爲PercentButton,等等),並給它一個綁定屬性(稱之爲_pctWidth,說了),給它一個公共的getter和公共二傳手,並在您的二傳手你這樣做:

[Bindable] 
private var _pctWidth:Number; 

public function set pctWidth(value:Number) : void { 
    _pctWidth = value; 
    percentWidth = _pctWidth; 
    invalidateDisplayList(); 
} 
+0

是的,我想到了,但正如我所說的,我希望有一個更簡單的解決方案,它不涉及額外的代碼。謝謝,無論如何;) – 2010-06-02 19:24:14

3

K, 我遇到了同樣的問題:一個百分比值綁定到火花容器的percentWidth屬性。首先,我還挺有一些代碼固定,但不喜​​歡它,然後我發現我可以宣佈在一個不錯的MXML方式結合:就像一個魅力:)

1

優雅

<fx:Script> 
    <![CDATA[ 
    [Bindable] private var pWidth:uint; 
    ]]> 
</fx:Script> 

<fx:Binding source="pWidth" destination="myContainer.percentWidth"/> 

<s:Group id="myContainer" /> 

廠解決辦法是:

<s:Button percentWidth="{buttonWidth}" /> 
+0

你確定你可以做到這一點? – ktutnik 2011-10-19 04:18:15

2

我用幾個項目的值相同,並沒有想添加一個FX:在每一個綁定,所以我做了這樣的事情:

<fx:Script> 
    <![CDATA[ 
     private var buttonWidth:int=50; 
     private function updateWidth(event:Event):void { 
      event.currentTarget.percentWidth=buttonWidth; 
     } 
    ]]> 
</fx:Script> 
<s:Button id="button1" add="updateWidth(event)"/> 
<s:Button id="button2" add="updateWidth(event)"/> 
<s:Button id="button3" add="updateWidth(event)"/> 
<s:Button id="button4" add="updateWidth(event)"/> 
<s:Button id="button5" add="updateWidth(event)"/>