public TradingViewModel(ViewModelContext viewModelContext, AccountViewModel accountViewModel, SymbolsViewModel symbolsViewModel, TradeViewModel tradeViewModel, OrdersViewModel ordersViewModel, IWpfExchangeService exchangeService, IAccountsService accountsService, IChartHelper chartHelper) : base(viewModelContext) { AccountViewModel = accountViewModel; SymbolsViewModel = symbolsViewModel; TradeViewModel = tradeViewModel; OrdersViewModel = ordersViewModel; Symbols = new ObservableCollection <SymbolViewModel>(); symbolObservableSubscriptions = new Dictionary <string, IDisposable>(); this.exchangeService = exchangeService; this.accountsService = accountsService; this.chartHelper = chartHelper; ObserveSymbols(); ObserveAccount(); ObserveTrade(); ObserveOrders(); CloseCommand = new ViewModelCommand(Close); }
protected async override void OnPublished(object data) { if (isOpen) { return; } IsBusy = true; if (Messages != null && Messages.Any()) { ClearMessages(); } accountViewModel.Dispatcher = ViewModelContext.UiDispatcher; symbolsViewModel.Dispatcher = ViewModelContext.UiDispatcher; tradeViewModel.Dispatcher = ViewModelContext.UiDispatcher; ordersViewModel.Dispatcher = ViewModelContext.UiDispatcher; Account = new Account(new Interface.AccountInfo { User = new Interface.User() }); try { userAccount = await accountsService.GetAccount(Title); var json = JsonConvert.SerializeObject(userAccount, Formatting.Indented); Logger.Log(json, Category.Info, Priority.Medium); } catch (Exception ex) { TradeViewModelException(ex.ToString(), ex); } if (userAccount != null && userAccount.Preferences != null) { if (!string.IsNullOrWhiteSpace(userAccount.ApiKey)) { Account.ApiKey = userAccount.ApiKey; Account.ApiSecret = userAccount.ApiSecret; } } SymbolsViewModel.SetAccount(userAccount); AccountViewModel.SetAccount(account); isOpen = true; IsBusy = false; }
protected override void OnDisposing() { if (disposed) { return; } if (AccountViewModel != null) { accountObservableSubscription.Dispose(); AccountViewModel.Dispose(); } foreach (var subscription in symbolObservableSubscriptions.Values) { subscription.Dispose(); } foreach (var symbol in Symbols) { symbol.Dispose(); } if (SymbolsViewModel != null) { symbolsObservableSubscription.Dispose(); SymbolsViewModel.Dispose(); } if (TradeViewModel != null) { tradeObservableSubscription.Dispose(); TradeViewModel.Dispose(); } if (OrdersViewModel != null) { ordersObservableSubscription.Dispose(); OrdersViewModel.Dispose(); } disposed = true; }