2016-04-15 4 views
1

Ich bin neu in diesen reaktiven Erweiterungen Sachen, aber ich sehe es hat einige wirklich nützliche Sachen.Kombiniere 2 reaktive Eigenschaften in einen reaktiven Befehl mit reaktiven Bindungen

Eines der Dinge, die ich wirklich mag, ist die Fähigkeit, eine Bool-Eigenschaft in einen Befehl zu verwandeln, der unter dieser Bedingung ausgeführt wird.

Zum Beispiel, wenn ich eine Interaktion mit einem Türer werde ich in meiner Meinung nach Modell etwas wie diese:

public ReactiveProperty<bool> IsOpen{ get; } 

und

public ReactiveCommand<bool> SetIsLocked { get; } 

dann kann ich etwas tun:

Dies generiert einen Befehl, der seine CanExecute jedes Mal die 01 aktualisiertFlag ändert sich und wird den entsprechenden Wert an meiner Tür beim Aufruf einstellen.

Aber was, wenn ich hinzufügen, eine andere Flagge, die auch ein Bool, saay etwas wie folgt aus:

public ReactiveProperty<bool> HasLock{ get; } 

Jetzt möchte ich mein Befehl auszuführen, wenn die Tür ein Schloss hat und geschlossen ist, aber ich habe nicht Irgendeinen Weg gefunden, das zu tun.

Einige von Ihnen können sagen, dass ich das schaffen kann, indem ich eine andere reaktive Eigenschaft erzeuge, die die beiden zusammenführt, und ich weiß, dass ich es so machen kann, aber was ich wissen will ist, ob es einen Weg gibt, es zu tun Verschmelzen der IO-Server und was wäre die Syntax für so etwas.

+0

Sind Sie mit dem [ReactiveProperty] (https://www.nuget.org/packages/ReactiveProperty/) nuget Paket? –

+0

ja, das verwenden wir. Version 2.4.2 –

Antwort

1

Ich glaube, Sie CombineLatest wie diese verwenden:

SetIsLocked = 
    IsOpen 
    .CombineLatest(
     HasLock, 
     (open,has_lock) => !open && has_lock) 
    .ToReactiveCommand<bool>(); 
+0

Yup, funktioniert wie ein Zauber. Danke dafür. –

+0

Gern geschehen –

Verwandte Themen