private void ExecuteOnMainThread(TickerTabItemViewModel tab, StreamDataItem item) { if (tab == null) { return; } Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { if (item is Quote) { tab.OnNewStreamItem(item as Quote); } else if (item is Trade) { tab.OnNewStreamItem(item as Trade); } })); if (TickerTabsViewModel.SelectedTab != tab) { tab.SetUnread(); } }
public void RemoveTab(TickerTabItemViewModel viewModel) { if (SelectedTab == viewModel && Tabs.Count == 1) { SelectedTab = null; } else { // TODO: activate next tab //var tabIndexToClose = Tabs.IndexOf(viewModel); //int nextTab; //if (tabIndexToClose == Tabs.Count) // nextTab = } Tabs.Remove(viewModel); }
public void AddTab(string ticker) { var tab = Tabs.FirstOrDefault(t => t.Ticker == ticker); if (tab != null) { SelectedTab = tab; } else { var tabView = new TickerTabContent(); var viewModel = new TickerTabItemViewModel(ticker, ticker, tabView); tabView.SetViewModel(viewModel); Tabs.Add(viewModel); SelectedTab = viewModel; } }