Flex 4对不匹配类型属性的双向数据绑定

问题描述:

真的没有简单的方法来对不匹配类型属性执行双向数据绑定吗?在下面的例子我试图两个属性彼此结合:String类型(从s:TextInputtext属性)的一个和另一个Number型的(从Foobar属性)Flex 4对不匹配类型属性的双向数据绑定

package com.example 
{ 
    public class Foo 
    { 
     [Bindable] public var bar:Number; 
    } 
} 

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 

    xmlns:ex="com.example.*" 
> 
    <fx:Declarations> 
     <ex:Foo id="foo" /> 
    </fx:Declarations> 
    <s:TextInput text="@{foo.bar}" /><!-- error at this line --> 
</s:Application> 

试图编译该代码产生以下错误:

1067: Implicit coercion of a value of type String to an unrelated type Number.

我明白了为什么错误发生,但我想知道,如果我只是无知的东西(也许是某种Flex 4中的元数据),这将允许尝试在之间的转换Ť WO类型,如果这种转换失败,抛出一个运行时错误...

我最终为我的对象使用了data renderer,这对数据类型是盲目的。所以,我想唯一的解决方法是上传到Object或*并调用你“知道”的方法。虽然这样做可能会产生运行时错误,通常在编译时会被捕获,但我没有看到更好的解决方案。

我能想出是Foo改变的财产bar类型*(星是外卡的唯一的事情,这可以防止在编译时进行类型检查)。但我仍然非常想知道是否有办法保持这种类型...