Ejemplo n.º 1
0
        public bool?ShowDialogView(IViewModelBase viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            var result = default(bool?);

            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.Invoke(() => result = ShowDialogView(viewModel));
            }
            else
            {
                var viewType = _viewModel2View.Single(item => item.ViewModel == viewModel.GetType()).View;
                try
                {
                    var view = (Window)Activator.CreateInstance(viewType);
                    view.DataContext = viewModel;

                    view.Closed += (sender, e) => viewModel.Dispose();

                    result = view.ShowDialog();
                }
                catch (Exception ex)
                {
                    ShowMessage(ex.ToString(), "Erro", MsgBoxButton.OK, MsgBoxIcon.Error);
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
        public void ShowView(IViewModelBase viewModel, Action closeAction = null)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            if (!Dispatcher.CheckAccess())
            {
                Dispatcher.Invoke(() => ShowView(viewModel, closeAction));
                return;
            }

            try
            {
                var viewType = _viewModel2View.Single(item => item.ViewModel == viewModel.GetType()).View;
                var view     = (Window)Activator.CreateInstance(viewType);
                view.DataContext = viewModel;

                view.Closed += (sender, args) =>
                {
                    if (closeAction != null)
                    {
                        closeAction.Invoke();
                    }

                    viewModel.Dispose();
                };

                view.Show();
            }
            catch (Exception ex)
            {
                ShowMessage(ex.ToString(), "Erro", MsgBoxButton.OK, MsgBoxIcon.Error);
            }
        }