private bool?LaunchDialog(DeviceHubDialogViewModelBase viewModel, bool isModal, EventHandler closedHandler) { bool?retval = null; DeviceHubDialogView view = GetDialogView(viewModel); view.DataContext = viewModel; view.Owner = ParentWindow; if (isModal) { viewModel.RequestClose += view.OnRequestClose; retval = view.ShowDialog(); viewModel.RequestClose -= view.OnRequestClose; view.DataContext = null; view = null; } else { if (closedHandler != null) { viewModel.NotifyClosed += closedHandler; } view.Closed += (o, a) => { viewModel.NotifyClosedSubscribers(); }; view.Show(); viewModel.Activate(); } return(retval); }
private DeviceHubDialogView GetDialogView(DeviceHubDialogViewModelBase viewModel) { if (Contents == null) { throw new Exception("Dialog Service contents are null!"); } string viewModelClassname = viewModel.GetType().FullName; DialogContents item = Contents.Where(c => c.ViewModelClassname == viewModelClassname).FirstOrDefault(); if (item == null) { throw new Exception(String.Format("Invalid classname, {0), passed to DialogService.LaunchDialog().", viewModelClassname)); } Type viewType = Type.GetType(item.ViewClassname); DeviceHubDialogView view = (DeviceHubDialogView)Activator.CreateInstance(viewType); view.Owner = ParentWindow; return(view); }