public TrayIconViewModel(ISessionManager sessionManager, IPopupViewModel popupViewModel) { _sessionManager = sessionManager; PopupViewModel = popupViewModel; LoginCommand = new DelegateCommand(obj => Login(), () => !_sessionManager.HasValidSession); ExitCommand = new DelegateCommand(obj => Close(), () => true); }
private void ClosePopup(IPopupViewModel viewModel) { PopupWindow popup = _Popups.FirstOrDefault(p => ((FrameworkElement)p.Content).DataContext == viewModel); if (popup != null) { _Popups.Remove(popup); if (viewModel.IsModal && _Popups.Count == 0) { EnableMainContentWindow(); } if (_Popups.Count > 0) { _Popups.Last().IsEnabled = true; } popup.ForceClose(); // WORKAROUND: This is here because sometimes when closing a popup, // WPF will minimize the MainWindow even after removing it as owner. // If there's a better way to avoid this, I'm all ears. _MainWindow.Activate(); } }
public override void ChangePresentation(MvxPresentationHint hint) { var closeHint = hint as MvxClosePresentationHint; IPopupViewModel popupViewModel = closeHint?.ViewModelToClose as IPopupViewModel; if (popupViewModel != null) { ClosePopup(popupViewModel); return; } base.ChangePresentation(hint); }
private PopupWindow(IPopupViewModel viewModel, Size size) { InitializeComponent(); _viewModel = viewModel; _viewModel.RequestClose += ViewModel_RequestClose; DataContext = _viewModel; Owner = Application.Current.MainWindow; if (size != default(Size)) { SizeToContent = SizeToContent.Manual; Width = size.Width; Height = size.Height; ResizeMode = ResizeMode.CanResize; } else { SizeToContent = SizeToContent.WidthAndHeight; ResizeMode = ResizeMode.NoResize; } }
private void PresentPopup(FrameworkElement frameworkElemenet, IPopupViewModel popupViewModel) { var popup = new PopupWindow { Owner = _MainWindow, Content = frameworkElemenet, DataContext = frameworkElemenet.DataContext, Topmost = popupViewModel.TopMost }; if (popupViewModel.IsModal) { DisableMainContentWindow(); } _Popups.Add(popup); foreach (var subPopups in _Popups.Where(p => !p.Equals(popup))) { subPopups.IsEnabled = false; } popup.Show(); }