private void OnQueryPosition(AccountVM acctVm) { string viewName = acctVm.InvestorId; var existingPane = RegionManager.GetExistingPane <PositionContentPane>(viewName); if (existingPane != null) { existingPane.Activate(); PositionView positionView = existingPane.Content as PositionView; if (positionView != null) { positionView.ViewModel.RefreshPositionCommand.Execute(); } } else { PositionContentPane pane = new PositionContentPane(); pane.ViewName = viewName; var positionView = ServiceLocator.Current.GetInstance <PositionView>(); positionView.ViewModel.SetAccount(acctVm); positionView.ViewModel.RefreshPositionCommand.Execute(); pane.Content = positionView; //pane.CloseAction = Infragistics.Windows.DockManager.PaneCloseAction.RemovePane; pane.Closed += new EventHandler <Infragistics.Windows.DockManager.Events.PaneClosedEventArgs>(pane_Closed); RegionManager.RegisterViewWithRegion(RegionNames.PortfolioViewRegion, () => pane); pane.Activate(); } }
void pane_Closed(object sender, Infragistics.Windows.DockManager.Events.PaneClosedEventArgs e) { PositionContentPane pane = sender as PositionContentPane; if (pane != null) { PositionView positionView = pane.Content as PositionView; if (positionView != null) { positionView.ViewModel.SetAccount(null); } } RegionManager.RemovePane(sender); }