private void ObserveChanges() { RequestQuote = new DelegateCommand( _ => _router.PublishEvent(new RequestQuoteEvent()), _ => Notional.HasValue && CurrencyPair.HasValue && _status != QuoteStatus.Quoting ); AcceptQuoteCommand = new DelegateCommand( _ => _router.PublishEvent(new AcceptQuoteEvent(_quoteId)), _ => _status == QuoteStatus.Quoting ); RejectQuoteCommand = new DelegateCommand( _ => _router.PublishEvent(new RejectQuoteEvent(_quoteId)), _ => _status == QuoteStatus.Quoting ); Notional .ObserveProperty(q => q.Value) .Where(_ => !_entryMonitor.IsBusy) .Subscribe(quantity => _router.PublishEvent(new NotionalChangedEvent(quantity))); CurrencyPair .ObserveProperty(q => q.Value) .Where(_ => !_entryMonitor.IsBusy) .Subscribe(symbol => _router.PublishEvent(new CurrencyPairChangedEvent(symbol))); }