Exemple #1
0
 /// <summary>
 /// Зерегистрировать новую пару модель-окно. Модель должна быть унаследована от базового типа ViewModel, а окно от Window
 /// </summary>
 /// <param name="viewModelType">Тип модели</param>
 /// <param name="windowType">Тип окна</param>
 public void AddPair(Type viewModelType, Type windowType)
 {
     if (!IsObjectTypeCorrespondsToExpetedType(viewModelType, typeof(ViewModel)) || !IsObjectTypeCorrespondsToExpetedType(windowType, typeof(Window)))
     {
         throw new ArgumentException("Wrong object type");
     }
     ModelWindowDictionary.Add(viewModelType, windowType);
 }
Exemple #2
0
        /// <summary>
        /// Создать и отобразить окно для указанной модели
        /// </summary>
        /// <param name="viewModel">Модель окна</param>
        /// <param name="asDialog">Создать новое окно модально или нет</param>
        /// <returns>Созданное окно</returns>
        public virtual void ShowWindow(ViewModel viewModel, bool asDialog)
        {
            if (!ModelWindowDictionary.ContainsKey(viewModel.GetType()))
            {
                throw new ArgumentException("Not registered ViewModel type");
            }
            var window = Activator.CreateInstance(ModelWindowDictionary[viewModel.GetType()]) as Window;

            ActiveWindows.Add(viewModel, window);
            viewModel.CloseEvent += OnViewModelCloseEvent;
            if (window != null)
            {
                window.DataContext = viewModel;
                if (asDialog)
                {
                    window.ShowDialog();
                }
                else
                {
                    window.Show();
                }
            }
        }