Flex ChangeWatcher绑定到负面条件

时间:2011-01-07 23:36:31

标签: flex binding getter-setter

我在一个组件中有一个可绑定的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;
}

这可能,或者是否有其他方法我完全失踪了?

2 个答案:

答案 0 :(得分:1)

可以在绑定utils上使用绑定Setter,但是你的方法似乎有效,否则bind属性对它映射的属性类型是盲目的,所以它没有负条件参数。

答案 1 :(得分:0)

我会扩展ContextMenuItem并在其上创建一个自定义属性,您可以使用它来设置底层ContextMenuItem的启用或不启用