Apache flex 如何将BindingUtils与样式属性一起使用(使用setStyle方法)?

Apache flex 如何将BindingUtils与样式属性一起使用(使用setStyle方法)?,apache-flex,data-binding,binding,Apache Flex,Data Binding,Binding,大多数BindingUtils的示例显示了如何在运行时绑定对象的属性(公共变量或getter/setter) 但是,当只能通过setStyle(“top”,value)访问属性时,如何绑定属性,例如组件的“top”在运行时 我是否应该创建一对自定义的getter/setter来影响相关UIComponent的样式属性?似乎有点不必要…您应该使用“setter”绑定要查看的属性,即函数: private function foo():void { BindingUtils.bindSett

大多数BindingUtils的示例显示了如何在运行时绑定对象的属性(公共变量或getter/setter)

但是,当只能通过
setStyle(“top”,value)访问属性时,如何绑定属性,例如组件的
“top”
在运行时


我是否应该创建一对自定义的getter/setter来影响相关UIComponent的样式属性?似乎有点不必要…

您应该使用“setter”绑定要查看的属性,即函数:

private function foo():void
{
    BindingUtils.bindSetter(makeStyleSetter("styleName", target), this, "styleProperty");
}

private function makeStyleSetter(style:String, target:UIComponent):Function
{
    return function(value:Object):void
    {
        target.setStyle(style, value);
    }
}

在内存管理方面,我是否应该存储BindingUtils.bindSetter(…)调用返回的'ChangeWatcher'实例的引用?这样我以后就可以调用.unwatch();在它上面去掉固体参照物?(我想这不是一个弱引用:s)此外,我认为您需要函数闭包(局部变量以保持目标UIComponent的作用域)来防止一些错误引用问题。至少在这种情况下。。。如果目标可能会发生变化,则为。是的,您可以存储ChangeWatcher的引用。但是我认为你所说的函数闭包在这里是不相关的:你在动态函数中没有做任何与作用域相关的事情。是的,我认为你是对的。我正在对函数闭包进行一些研究,可以肯定的是,如果传递参数,它不会替换或破坏引用。这促使我写了一篇关于他们的小博客!:)