Flex ChangeWatcher привязывает к отрицательному условию - PullRequest
0 голосов
/ 08 января 2011

У меня есть привязываемый геттер в компоненте, который сообщает мне, когда работает [скрытый] таймер.У меня также есть контекстное меню, которое, если этот таймер работает, должно отключить один из пунктов меню.Можно ли создать ChangeWatcher, который отслеживает условие отрицательное привязываемого свойства / получателя и изменяет свойство enabled пункта меню?

Вот основные методы I 'm пытается связать вместе:

Класс 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");
}

В приведенном выше коде у меня есть обратный случай: when isPlaying () верно, пункт меню включен;Я хочу, чтобы он был включен, только когда условие ложно.

Я мог бы создать второй получатель (есть другие привязки, которые зависят от текущего получателя), чтобы вернуть обратное условие, но это звучит уродливо для меня:

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

Возможно ли это, или я совсем упускаю другой подход?

Ответы [ 2 ]

1 голос
/ 08 января 2011

Можно использовать bind Setter для утилит связывания, но ваш подход кажется верным, в противном случае свойство связывания скрыто от типов свойств, которые оно отображает, поэтому у него нет отрицательного параметра условия.

0 голосов
/ 27 марта 2017

Я бы расширил ContextMenuItem и создал для него настраиваемое свойство, которое можно использовать для установки включенного или не включенного базового ContextMenuItem

...