0

我在组件中有一个可绑定的 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() 为真时,菜单项被启用;我希望它仅在条件为假时启用。

我可以创建第二个 getter(还有其他依赖于当前 getter 的绑定)来返回相反的条件,但这对我来说听起来很难看:

[Bindable]
public function get isNotPlaying():Boolean {
    return !isPlaying;
}

这是可能的,还是我完全错过了另一种方法?

4

2 回答 2

1

可以在绑定实用程序上使用绑定 Setter,但您的方法似乎有效,否则绑定属性对其映射的属性类型视而不见,因此它没有负面条件参数。

于 2011-01-07T23:47:06.813 回答
0

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

于 2017-03-27T17:43:57.580 回答