Ich habe eine bindbare Getter in einer Komponente, die mich informiert, wenn ein [versteckter] Timer ausgeführt wird. Ich habe auch ein Kontextmenü, das, wenn dieser Timer läuft, sollte einen der Menüpunkte deaktivieren. Ist es möglich, einen ChangeWatcher zu erstellen, der auf die negative Bedingung einer bindbaren Eigenschaft/Getter überwacht und die enabled
Eigenschaft des Menüelements ändert?Flex ChangeWatcher binden an eine negative Bedingung
Hier sind die grundlegenden Methoden, die ich zusammen zu binden, ich versuche:
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 die inverse Fall: Wenn isPlaying() wahr ist, ist der Menüeintrag aktiviert; Ich möchte, dass es nur aktiviert wird, wenn die Bedingung falsch ist.
kann ich einen zweiten Getter schaffen (es gibt auch andere Bindungen, die auf dem aktuellen Getter verlassen) den inversen Zustand zurückzukehren, aber das klingt für mich hässlich:
[Bindable]
public function get isNotPlaying():Boolean {
return !isPlaying;
}
dies möglich ist, oder gibt es eine anderes Ansatz fehlt mir komplett?
einstellen können „binden Eigenschaft ist blind“ - ja, ich hatte Angst, dass :) – bedwyr