private void ShowPopup(string viewName, Uri uri, string title, Action completedAction, bool maximize = false, bool isModal = false) { if (!_popupWindows.ContainsKey(viewName)) { var navigationContext = new NavigationContext(null, uri); object view; try { view = _regionNavigationContentLoader.LoadContent(new Region(), navigationContext); } catch (Exception e) { OnLoadContentException(e); view = null; } if (view != null) { if (view is FrameworkElement) { var navigatable = (view as FrameworkElement).DataContext as INavigationAware; if (navigatable != null) { navigatable.OnNavigatedTo(navigationContext); } } var configurationBehaviorService = new ConfigurationBehaviorService(); if (isModal) { var popupWindow = new PopupWindow(); popupWindow.IsMaximized = maximize; if (title == null) { SetupPopupWindowTitle(popupWindow, view); } else { popupWindow.Title = title; } popupWindow.SubContent = view; popupWindow.IsModal = isModal; _popupWindows.Add(viewName, popupWindow); configurationBehaviorService.Watch(popupWindow); EventHandler closedEventHandler = null; closedEventHandler = (s, e) => { popupWindow.Closed -= closedEventHandler; configurationBehaviorService.Stop(); _popupWindows.Remove(viewName); completedAction.Invoke(); }; popupWindow.Closed += closedEventHandler; popupWindow.Show(); } else { var floatableWindow = new FloatableWindow(); if (floatableWindow.Title == null) { SetupPopupWindowTitle(floatableWindow, view); } else { floatableWindow.Title = title; } floatableWindow.Content = view; _popupWindows.Add(viewName, floatableWindow); configurationBehaviorService.Watch(floatableWindow); EventHandler closedEventHandler = null; closedEventHandler = (s, e) => { floatableWindow.Closed -= closedEventHandler; configurationBehaviorService.Stop(); _popupWindows.Remove(viewName); completedAction.Invoke(); }; floatableWindow.Closed += closedEventHandler; floatableWindow.Show(); } } } }
private void ShowPopup(string viewName, Uri uri, string title, Action completedAction, bool maximize = false, bool isModal = false) { if ( !_popupWindows.ContainsKey ( viewName ) ) { var navigationContext = new NavigationContext ( null, uri ); object view; try { view = _regionNavigationContentLoader.LoadContent ( new Region (), navigationContext ); } catch ( Exception e ) { OnLoadContentException ( e ); view = null; } if ( view != null ) { if ( view is FrameworkElement ) { var navigatable = ( view as FrameworkElement ).DataContext as INavigationAware; if ( navigatable != null ) { navigatable.OnNavigatedTo ( navigationContext ); } } var configurationBehaviorService = new ConfigurationBehaviorService(); if ( isModal ) { var popupWindow = new PopupWindow(); popupWindow.IsMaximized = maximize; if (title == null) { SetupPopupWindowTitle ( popupWindow, view ); } else { popupWindow.Title = title; } popupWindow.SubContent = view; popupWindow.IsModal = isModal; _popupWindows.Add(viewName, popupWindow); configurationBehaviorService.Watch(popupWindow); EventHandler closedEventHandler = null; closedEventHandler = (s, e) => { popupWindow.Closed -= closedEventHandler; configurationBehaviorService.Stop(); _popupWindows.Remove(viewName); completedAction.Invoke(); }; popupWindow.Closed += closedEventHandler; popupWindow.Show(); } else { var floatableWindow = new FloatableWindow (); if( floatableWindow.Title == null) { SetupPopupWindowTitle ( floatableWindow, view ); } else { floatableWindow.Title = title; } floatableWindow.Content = view; _popupWindows.Add(viewName, floatableWindow); configurationBehaviorService.Watch(floatableWindow); EventHandler closedEventHandler = null; closedEventHandler = (s, e) => { floatableWindow.Closed -= closedEventHandler; configurationBehaviorService.Stop(); _popupWindows.Remove(viewName); completedAction.Invoke(); }; floatableWindow.Closed += closedEventHandler; floatableWindow.Show(); } } } }