是否可以使用数据绑定为MXML中定义的UIComponent的width
属性设置百分比值?
我试图实现的是这样的(不起作用):
<s:Button width="{buttonWidth}%"/>
我知道在MXML中使用width
或height
属性的百分比在Flex SDK中是一种破解,因为它们只应接受数值,但由于percentWidth和percentHeight不可用在MXML中,我很卡住= /
我真的想避免使用代码做这么简单的事情,以保持我的代码清晰易读。
有人知道如何实现这个目标吗?
答案 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();
}