示例#1
0
        /// <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);
        }
示例#2
0
        /// <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;
            }
        }