ericdes
2/27/2016 - 9:05 AM

TradeList.xaml.cs

    public class Vm1 : ReactiveObject, IDisposable
    {
        private readonly IDisposable _cleanup;

        private readonly IObservableCache<Trade, long> _trades;

        private ReadOnlyObservableCollection<Trade> _myTrades;
        public ReadOnlyObservableCollection<Trade> MyTrades
        {
            get { return _myTrades; }
        }

        public readonly SourceCache<Trade, long> TradesSource;
        public Vm1()
        {
            TradesSource = new SourceCache<Trade, long>(trade => trade.Id);
            var tradesObservable = TradesSource.AsObservableCache();
            TradesSource.AddOrUpdate(Trade.Generate(0));

            _trades = TradesSource.AsObservableCache();
            var job = _trades.Connect()
                .Bind(out _myTrades)
                .Subscribe();

            _cleanup = new CompositeDisposable(_trades, TradesSource, job);
        }

        public void Dispose()
        {
            _cleanup.Dispose();
        }
    }



        
        
        // OK
        private void AddTrade_Click(object sender, RoutedEventArgs e)
        {
            var tradeCount = ViewModel.MyTrades.Count;
            ViewModel.TradesSource.AddOrUpdate(Trade.Generate(tradeCount));

        } 
        
        // UPDATE NOT PROPAGATED TO VIEW
        private void UpdateMarketPrice_Click(object sender, RoutedEventArgs e)
        {
            ViewModel.MyTrades[0].SetMarketPrice(13);
        }