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); }
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); } }