我正在尝试将对象的属性数据绑定到ComboBox的(editable = true)文本属性。此属性的类型为Number。
如果我使用内联语法绑定,它可以工作:
<mx:ComboBox text="{myObj.prop}">
如果我使用mx:Binding进行绑定,则会收到错误:
<mx:Binding source="{myObj.prop}" destination="combobox.text" />
// 1067: Implicit coercion of a value of type Number to an unrelated type String.
为什么会出现这种行为差异?
属性定义:
private var _prop: Number;
[Bindable] public function get prop(): Number { return _prop; }
public function set prop(value: Number): void { _prop = value; }
答案 0 :(得分:1)
最初我想:
mx:Binding
源应该是字段名称本身,而不是值。 Flex抱怨是因为myObj.prop
取消引用{}
因为它需要带字段名称的字符串Number
并看到那里的值(<mx:Binding source="myObj.prop" destination="combobox.text" />
)。
mx:Binding
<强>然而强>
text
源表达式中允许花括号内的ActionScript,在这种情况下是必需的。请参阅Adobe的data binding examples。
String
属性期望为其分配<mx:Binding source="{String(myObj.prop)}" destination="combobox.text" />
,因此您需要强制转换绑定:
{{1}}
我对最初的误导性答案表示道歉,希望这是正确的道路。