Ho un ObservableCollection che ho bisogno di fare riferimento a un elemento specifico. Se l'elemento non è presente, ho bisogno di monitorarlo tramite Reactive Extensions per se/quando appare la voce, ma ho bisogno di aiuto per impostare la dichiarazione. Non ho ancora familiarità con il modo in cui tutte le estensioni Linq sono destinate a funzionare, quindi non sono sicuro di come farlo. Qualcuno può indicarmi la giusta direzione?Utilizzando Rx (Reactive Extensions) per guardare per elemento specifico in ObservableCollection
Per illustrare meglio, ho bisogno di qualcosa di simile al seguente:
public class myitem :INotifyPropertyChanged
{
private string _key;
private string _value;
public string key
{
get { return _key; }
set { _key = value; NotifyPropertyChanged("key"); }
}
public string myvalue
{
//proper getter/setter, blah, blah
}
}
ObservableCollection<myitem> _collection = mycollection;
var x = Observable.FromEvent<NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(
h => new NotifyCollectionChangedEventHandler(h),
h => _collection.CollectionChanged += h,
h => _collection.CollectionChanged -= h);
string keywaitingfor = "thiskey";
string valuewaitingfor = x.Where(xx => xx.key == keywaitingfor).First().myvalue;
Questo non è esattamente il mio scenario, ma spero che si può vedere quello che sto cercando di fare. ObservableCollection potrebbe non contenere elementi da iniziare e i valori della proprietà vengono visualizzati in modo asincrono. So che l'ultima riga non è corretta, ho bisogno di avere un Observable sull'evento PropertyChanged della classe all'interno di una lambda ... ma sono ancora confuso su come ottenere quel valore per quando entrambe le condizioni sono soddisfatte.
ObservableCollection è una sorta di una scelta di denominazione infelice ora :(Questo è urto nella strada quando si fa formazione Rx. –
Sembra proprio quello che avrò bisogno. – Random
Non mi rendevo conto ReactiveUI stava per essere una vasta libreria tale. E ' sembra fantastico, vorrei solo averlo saputo qualche mese fa, potrebbe non adattarsi al mio progetto a questo punto, quindi, mentre spero di poterlo usare in futuro, ed è una risposta "una", io è necessario deselezionarlo come risposta "accettata" – Random