public async override void OnActiveChanged(bool isActive) { try { if (isActive) { var openDocuments = new FindDocumentViewModel { Module = "Trading" }; OnGetViewModels(openDocuments); var tradingViewModels = openDocuments.ViewModels.OfType <TradingViewModel>() .Where(d => d.SymbolViewModel != null && d.SymbolViewModel.IsActive).ToList(); foreach (var tradingViewModel in tradingViewModels) { tradingViewModel.DisposeSymbolViewModel(); } await LoadSymbolViewModel().ConfigureAwait(false); } else { DisposeSymbolViewModel(); } } catch (Exception ex) { TradingViewModelException(ex.ToString(), ex); } }
private void GetDocuments(object param) { var documentViewModels = new FindDocumentViewModel(); OnGetViewModels(documentViewModels); ViewModelContext.UiDispatcher.Invoke( () => { OpenDocuments.Clear(); documentViewModels.ViewModels.ForEach(vm => { if (vm != this) { OpenDocuments.Add(vm); } }); }); }
/// <summary> /// Gets one or more view models based on settings in <see cref="FindDocumentViewModel"/>. /// A single view model can be fetched by navigation id, multiple view models can be /// fetched by module name, and if neither navigation id or module name is provided then /// all document view models will be returned for all views. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="FindDocumentViewModel"/>.</param> private void GetViewModels(object sender, FindDocumentViewModel e) { if (String.IsNullOrEmpty(e.NavigationId) && String.IsNullOrEmpty(e.Module)) { var documentViewModels = ViewContext.NavigationManager.GetAllViewModels(); e.ViewModels = documentViewModels; return; } if (!String.IsNullOrEmpty(e.NavigationId)) { var documentViewModel = ViewContext.NavigationManager.GetViewModel(e.NavigationId); e.ViewModel = documentViewModel; } if (!String.IsNullOrEmpty(e.Module)) { var documentViewModels = ViewContext.NavigationManager.GetViewModels(e.Module); e.ViewModels = documentViewModels; } }