Flex ChangeWatcher绑定到负条件
-
08-10-2019 - |
题
我在一个组件中有一个可约束力的getter,可以告诉我[隐藏]计时器正在运行时。我还有一个上下文菜单,如果该计时器正在运行,则应禁用其中一个菜单项。是否可以创建一个ChangeWatcher,以观察 消极的 可约束属性/Getter的条件,并更改 enabled
菜单项的属性?
这是我试图绑定在一起的基本方法:
A类:
[Bindable]
public function get isPlaying():Boolean {
return (_timer != null) ? _timer.running : false;
}
B类:
private var _playingWatcher:ChangeWatcher;
public function createContextMenu():void {
//...blah blah, creating context menu
var newItem:ContextMenuItem = new ContextMenuItem();
_playingWatcher = BindingUtils.bindProperty(newItem, "enabled", _classA, "isPlaying");
}
在上面的代码中,我有反向情况:当iSplaying()为true时,启用了菜单项;我希望只有在条件为false时才能启用它。
我可以创建第二个getter(还有其他依赖当前getter的绑定)以返回反向状态,但这对我来说听起来很丑:
[Bindable]
public function get isNotPlaying():Boolean {
return !isPlaying;
}
这是可能的,还是我完全缺少另一种方法?
解决方案
可以在绑定的utils上使用绑定设置器,但是您的方法似乎有效,否则绑定属性对其映射的属性类型视而不见,因此它没有负条件参数。
其他提示
我将扩展contextMenuitem并在其上创建一个自定义属性,您可以使用该属性来设置启用或不设置基础contextMenuitem
不隶属于 StackOverflow