private ModalResult <TResult> ShowModalInternal <TResult>(FrameworkElement view, string viewKey, string parentViewKey, object viewModel, bool isOpenedViewMember, bool isMessageBox = false) { var modalHostControl = new ModalHostControl { ModalContent = view }; var viewInfo = NavigateToInternal(viewKey, parentViewKey, modalHostControl, viewModel, true, isOpenedViewMember, isMessageBox); return(new ModalResult <TResult> (modalHostControl.ResultCompletionSource.Task) { ViewInfo = viewInfo }); }
private ViewGroupNode CreateNewNodeFrom(string viewInstanceKey, string viewKey, object viewModel, bool isModal, bool isMessageBox) { FrameworkElement viewInstance; if (isMessageBox) { viewInstance = new MessageBoxControl(); } else { viewInstance = _viewLocator.GetViewInstance(viewKey); viewInstance.DataContext = viewModel; EnforceViewKey(viewInstance, viewModel, viewInstanceKey); } var internalViewInstance = viewInstance; if (isModal) { var modalHost = new ModalHostControl { ModalContent = viewInstance }; internalViewInstance = modalHost; } var viewInfo = new View(viewInstanceKey) { UIMetadata = GetUIMetadata(viewInstance, viewModel), ViewHostInstance = new ViewHostControl { View = internalViewInstance }, ViewInstance = viewInstance, ViewModelInstance = viewModel, IsModal = isModal, IsMessageBox = isMessageBox }; return(new ViewGroupNode(null, viewInfo)); }