private static void openWindowHandler(WindowFactoryData data) { Window window = null; object viewModel = null; switch (data.WindowType) { case WindowClassType.MainWindow: window = new MainWindow(); viewModel = new MainWindowViewModel(); break; case WindowClassType.Catalog: window = new Catalog(); viewModel = new CatalogViewModel(data.DataAgggregator); break; default: break; } if (window == null || viewModel == null) { return; } window.DataContext = viewModel; FactoryService.Register(viewModel as ViewModelBase, window); // Attemps to find a parent window based on what ViewModel sent the request. Window parentWindow = FactoryService.GetWindowReference(data.CallingViewModel); if (parentWindow != null) { window.Owner = parentWindow; } if (data.Modal) { window.ShowDialog(); } else { window.Show(); } }