如何使用数据绑定动态更新图像?

时间:2010-02-20 21:29:24

标签: image flex binding

我有一个main.mxml应用程序,它列出了我的应用程序,它包含一个“浏览和上传”按钮。并包含一个图像来查看用户上传的图像,如下所示:

<mx:Application
<mx:Script>
    <![CDATA[

    import model.myModel;
    import control.myControl;

    // Create data model
    public var model:myModel = new myModel();
    //[Bindable]
    //private var scld_img:Bitmap;

    // Create control
    public var mycontrol:myControl = new myControl(mymodel);

</mx:Script>

<!-- Upload and view -->
<mx:Canvas id="upload" label="1: Upload Image">

   <mx:VBox>
   <mx:HBox>

   <mx:Label text="Upload an image: "/>
   <mx:Button id="btn"
      label="Browse and preview..."
      click="mycontrol.browseAndUpload();"
      buttonMode="true"
      useHandCursor="true"/>

   </mx:HBox>


<mx:Image id="mximg_upld"
   verticalCenter="0"
   horizontalCenter="0"
   source="mymodel.img_scld_bm"/>

</mx:VBox>
</mx:Canvas>
......

在我的myModel课程中,我有一个img_scld_bm browseAndUpload()函数在缩放之后进入。

我的意图是我的mx:Image会显示图片。如图所示,我正在分配图像source="mymodel.img_scld_bm",最终只会显示一个损坏的图像图标。

我还尝试了数据绑定,我的myModel课程中我有[Bindable] var img_scld_bm。然后尝试设置我的mx:Image source="{myModel.img_scld_bm}" ..似乎也没有做任何事情。所有这些编译都很好,没有任何警告。我想在这种情况下,我没有设置触发器或propertyChange事件来更新绑定?

有人可以帮助我理解,或者提供一个如何正确地将mx:Image源绑定到某个位图的示例吗?

1 个答案:

答案 0 :(得分:0)

根据您提供的代码,您似乎需要做两件事:

  1. 用大括号包裹来源。

  2. 在模型类中设置属性img_scld_bm。只有在设置属性时才会执行绑定;看起来您可能正在绘制当前存在的img_scld_bm,但这不会导致图像更新。

  3. 转换它:

    <mx:Image id="mximg_upld" verticalCenter="0" horizontalCenter="0" source="mymodel.img_scld_bm"/>

    对此:

    <mx:Image id="mximg_upld" verticalCenter="0" horizontalCenter="0" source="{mymodel.img_scld_bm}"/>

    然后,只要您对模型中的img_scld_bm进行更改,请重置image.source。

    这有用吗?