我正在尝试仅使用mxml,no< script>标签,虽然我不一定需要一个只有mxml的解决方案。看看我是否可以用mxml完成所有操作,这更像是一种教育练习。
我有一个自定义组件,它有一个滑块和textinput,它们的值/文本属性绑定在一起。我在组件中显示滑块的一些属性,以便它可以像滑块一样处理。
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="middle" horizontalGap="0">
<mx:int id="value">{slider.value}</mx:int>
<mx:int id="minimum">0</mx:int>
<mx:int id="maximum">100</mx:int>
<mx:int id="tickInterval">25</mx:int>
<mx:Array id="labels">['0%','50%','100%']</mx:Array>
<mx:HSlider id="slider" liveDragging="true" snapInterval="1"
value="{int(input.text)}"
minimum="{minimum}"
maximum="{maximum}"
tickInterval="{tickInterval}"
labels="{labels}"/>
<mx:Spacer width="25"/>
<mx:TextInput id="input" restrict="0-9" text="{slider.value}" maxChars="3" width="30"/>
<mx:Label text="%"/>
</mx:HBox>
请注意,滑块的VALUE属性绑定到输入字段的TEXT属性,反之亦然。双向绑定。这允许用户滑动拇指或在输入字段中键入以选择值,并且它们保持彼此同步。
此外,组件的VALUE属性绑定到滑块的VALUE属性,以便此组件的值始终包含滑块的值(以便可以像滑块一样使用组件)。
滑块的属性也绑定到组件的属性(最小值,最大值,刻度线)
问题是我想从组件的值初始化滑块的值,但滑块的值已经绑定到textinput。我还可以将它绑定到组件吗?
我的申请会有类似的内容:
<local:mycomponent minimum="20" maximum="80" labels="['20','50','80']" value="40"/>
我试过的一些不起作用的东西:
(1)我有一个初始化处理程序。
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="slider.value=value">
如果我的应用
,这会有效myslider.value = 40;
但如果我有
则无效<local:mycomponent value="40"/>
(2)我尝试了一个creationComplete处理程序
(3)我尝试了mx:binding
<mx:Binding source="slider.value" destination="this.value"/>
好像我错过了一些简单的东西。
答案 0 :(得分:0)
注意大括号:
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="{slider.value=value}">
在括号中,可能有任何代码。没有它们,只能有事件处理程序(函数)。