Flex - 使用MXML代码中的百分比绑定width属性

时间:2010-06-02 18:16:29

标签: flex binding mxml

是否可以使用数据绑定为MXML中定义的UIComponent的width属性设置百分比值?

我试图实现的是这样的(不起作用):

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


我知道在MXML中使用widthheight属性的百分比在Flex SDK中是一种破解,因为它们只应接受数值,但由于percentWidth和percentHeight不可用在MXML中,我很卡住= /

我真的想避免使用代码做这么简单的事情,以保持我的代码清晰易读。

有人知道如何实现这个目标吗?

4 个答案:

答案 0 :(得分:3)

K, 我遇到了同样的问题:将百分比值绑定到spark容器的percentWidth属性。首先,我用一些代码修改它但不喜欢它,然后我发现我可以用一个漂亮的MXML方式声明绑定:

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

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

<s:Group id="myContainer" />

像魅力一样工作:)

答案 1 :(得分:2)

我在几个项目上使用相同的值,并且不想在每个项目上添加fx:binding,所以我做了类似的事情:

    <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)"/>

答案 2 :(得分:1)

优雅的解决方案是:

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

答案 3 :(得分:0)

你可以扩展Button类(也许称之为PercentButton,无论如何)并给它一个可绑定属性(称之为_pctWidth,比方说),给它一个公共getter和一个公共setter,并在你的setter中你这样做:

[Bindable]
private var _pctWidth:Number;

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