2015-04-14 25 views
5

Utilizzando ReactiveUI, è possibile ignorare il valore iniziale per un determinato oggetto ReactiveObject?È possibile ignorare il valore iniziale per un oggetto ReactiveObject?

Ad esempio, ho un ViewModel I inizializzato e quindi I WhenAnyValue su ViewModel. Vengo avvisato immediatamente che il valore è null per la mia proprietà scelta. Sì, potrei fare lo .Where(x => x != null) per evitare questo, ma è potenzialmente possibile che sapere che è in seguito null ha un valore.

In altre parole, voglio iniziare a ricevere le notifiche dopo la prima modifica del valore.

Non vedo prontamente come posso farlo o se è possibile. Vedo riferimenti a Initial Value nella fonte per WantsAnyValue/WantsAny ma non è chiaro per me come imposto quel valore iniziale.

+1

forse il modo migliore, ma si potrebbe Skip (1) https://msdn.microsoft.com/en-us/library/vstudio/bb358985%28v=vs.100%29.aspx – kenny

+0

@ kenny Penso che "Skip" sia una buona risposta a questo problema. – christophano

+1

Vado con questa come risposta. Come l'autore o ReactiveUI [qui] (http://stackoverflow.com/a/22215041/1060314) raccomanda anche questo approccio. @kenny potresti rendere questa una risposta formale così posso segnarla? –

risposta

3

Spostare il mio commento ad una risposta a richiesta di OP per i punti;)

di ignorare la prima OnNext a init.

this.WhenAnyValue(model => model.Field).Skip(1) 
non
0

In questo caso è necessario utilizzare ObservableForProperty.

WhenAnyValue notificherà immediatamente il valore iniziale all'abbonato più eventuali nuovi valori in futuro mentre ObservableForProperty notifica solo i nuovi valori e ignora il valore iniziale.

+0

Questo risolve il problema. Un'ulteriore domanda, per i commenti per [questa domanda] (http://stackoverflow.com/a/22215041/1060314) Vedi il commento di Clyde seguito dal commento di Paul Betts (2 ° e 3 ° rispettivamente). Paul Betts sta dicendo che "Skip (1)" è preferibile. Sono più propenso a credere che "ObservableForProperty" sia la scelta migliore ma ero curioso, quindi seguirò quella domanda. Ahhhh .. Sto vedendo anche Paul Betts è uno degli autori primari di ReactiveUI, quindi suppongo che lo sappia. –

Problemi correlati