Frage

Ich habe einen bindungsfähigen Getter in einer Komponente mich, welche darüber informiert, wenn eine [versteckt] Zeit läuft. Ich habe auch ein Kontextmenü, wenn dieser Timer läuft, sollte eines der Menüpunkte deaktivieren. Ist es möglich, einen Change zu schaffen, die für die Uhren negativ Zustand einer bindbare Eigenschaft / Getter und ändert die enabled Eigenschaft des Menüpunktes?

Hier sind die grundlegenden Methoden Ich versuche, zusammen zu binden:

Klasse A:

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

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

In dem obigen Code, ich habe den umgekehrten Fall: wenn isPlaying () wahr ist, wird der Menüpunkt aktiviert; Ich will es nur dann aktiviert werden, wenn die Bedingung falsch ist.

Ich könnte einen zweiten Getter (es gibt auch andere Bindungen, die auf dem aktuellen Getter verlassen) schaffen den inversen Zustand zurückzukehren, aber das klingt hässlich zu mir:

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

Ist das möglich, oder gibt es einen anderen Ansatz, den ich völlig fehlt bin?

War es hilfreich?

Lösung

Könnte verwenden binden Setter auf die Bindung utils aber Ihr Ansatz scheint gültig sonst binden Eigenschaft ist blind für die Arten von Eigenschaften, die es der Zuordnung, so dass es keinen negativen Zustandsparameter.

Andere Tipps

Ich würde ContextMenuItem erweitern und eine benutzerdefinierte Eigenschaft auf es schaffen, dass Sie die aktiviert oder nicht von dem zugrunde liegenden ContextMenuItem

einstellen können
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top