/// <summary> /// Rejstruje wskazane okno jeśli nie ma go w słowniku. /// </summary> /// <remarks> /// Jeśli okno jest juz zarejstrowane, to zostanie przywrócone na górę. /// </remarks> /// <param name="window">Okno do otworzenia. Jeśli okno jest otwarte, to zwracany jest null.</param> private WindowModel RegisterWindow(Window window) { Ensure.ParamNotNull(window, nameof(window)); WindowModel model = new WindowModel() { OpenedWindow = window, ViewModel = window?.DataContext }; WindowBaseViewModel viewModel = model.ViewModel as WindowBaseViewModel; if (viewModel == null) { throw new ArgumentException(Application.Current.TryFindResource("IDS_Exception_IncorretViewModelBase") as string); } string strIdentity = viewModel.Identity; if (this.ActivateWindow(strIdentity)) { return(null); } // Przypinamy zdarzenia do okna model.OpenedWindow.StateChanged += OnWindowStateChanged; model.OpenedWindow.Closed += OnWindowClosing; // Dodajemy okna do kolekcji i je pokazujemy OpenedViews.Add(strIdentity, model); return(model); }
/// <inheritdoc/> public void OpenDialog(Window window) { Ensure.ParamNotNull(window, nameof(window)); try { WindowModel model = this.RegisterWindow(window); model?.OpenedWindow.ShowDialog(); } catch (Exception) { // // TODO - zapisać wyjątek loggerem // throw; } }