我在一个组件中有一个可绑定的getter,它会在[hidden]计时器运行时通知我。我还有一个上下文菜单,如果此计时器正在运行,则应禁用其中一个菜单项。是否可以创建一个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时,菜单项被启用;我希望它只在条件为假时启用。
我可以创建第二个getter(还有其他依赖当前getter的绑定)来返回逆条件,但这对我来说听起来很难看:
[Bindable]
public function get isNotPlaying():Boolean {
return !isPlaying;
}
这可能,或者是否有其他方法我完全失踪了?
答案 0 :(得分:1)
可以在绑定utils上使用绑定Setter,但是你的方法似乎有效,否则bind属性对它映射的属性类型是盲目的,所以它没有负条件参数。
答案 1 :(得分:0)
我会扩展ContextMenuItem并在其上创建一个自定义属性,您可以使用它来设置底层ContextMenuItem的启用或不启用