Question

J'ai un getter bindable dans un composant qui informe moi quand une minuterie [caché] est en cours d'exécution. J'ai aussi un menu contextuel qui, si cette minuterie est en cours d'exécution, devrait désactiver l'un des éléments du menu. Est-il possible de créer un ChangeWatcher qui veille pour le négatif état d'une propriété liable / getter et modifie la propriété enabled de l'élément de menu?

Voici les méthodes de base que je suis en train de lier ensemble:

Classe A:

[Bindable]
public function get isPlaying():Boolean {
    return (_timer != null) ? _timer.running : false;
}

Classe 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");
}

Dans le code ci-dessus, je le cas inverse: quand isPlaying () est vrai, l'élément de menu est activé; Je veux être activé que lorsque la condition est fausse.

Je pourrais créer un second getter (il y a d'autres liaisons qui reposent sur le getter courant) pour retourner la condition inverse, mais cela semble laid pour moi:

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

Est-ce possible, ou est-il une autre approche que je suis complètement absent?

Était-ce utile?

La solution

On pourrait utiliser bind Setter sur la liaison utils mais votre approche semble bien contraire bind valide est aveugle aux types de propriétés, il mappage de sorte qu'il n'a pas de paramètre de condition négatif.

Autres conseils

J'étendrait ContextMenuItem et de créer une propriété personnalisée sur ce que vous pouvez utiliser pour définir l'état activé ou non du ContextMenuItem

sous-jacente
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top