0

[hidden]タイマーが実行されているときに通知するコンポーネントにバインド可能なゲッターがあります。このタイマーが実行されている場合、メニュー項目の1つを無効にするコンテキストメニューもあります。バインド可能なプロパティ/ゲッターのenabledの状態を監視し、メニュー項目のプロパティを変更するChangeWatcherを作成することは可能ですか?

これが私が一緒にバインドしようとしている基本的な方法です:

クラス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の場合にのみ有効にしたい。

逆の条件を返すために2番目のゲッター(現在のゲッターに依存する他のバインディングがあります)を作成することもできますが、それは私には醜いように聞こえます:

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

これは可能ですか、それとも私が完全に欠けている別のアプローチがありますか?

4

2 に答える 2

1

utilsのバインドにbindSetterを使用できますが、それ以外の場合、bindプロパティはマッピングしているプロパティのタイプを認識しないため、負の条件パラメーターはありません。

于 2011-01-07T23:47:06.813 に答える
0

ContextMenuItemを拡張し、その上にカスタムプロパティを作成します。このプロパティを使用して、基になるContextMenuItemを有効にするかどうかを設定できます。

于 2017-03-27T17:43:57.580 に答える