private void GoToState(AppWindowState state) { switch (state) { case AppWindowState.Normal: GoToNormalCompactState(_normalRect, () => GetDefaultRect(false)); break; case AppWindowState.Compact: GoToNormalCompactState(_compactRect, () => GetDefaultRect(true)); break; case AppWindowState.FullScreen: _stateBeforeFullscreen = GetCurrentState(); if (_stateBeforeFullscreen == AppWindowState.Maximized) { _stateBeforeFullscreen = AppWindowState.Normal; } if (_window.WindowState == WindowState.Maximized) { _window.WindowState = WindowState.Normal; } _window.WindowStyle = WindowStyle.None; SystemCommands.MaximizeWindow(_window); break; case AppWindowState.Maximized: SystemCommands.MaximizeWindow(_window); break; case AppWindowState.Minimized: SystemCommands.MinimizeWindow(_window); break; } }
private void RefreshButtons(bool force) { var current = GetCurrentState(); if (current != AppWindowState.Minimized && current != _lastState || force) { Model.IsMaximized.Value = current == AppWindowState.FullScreen || current == AppWindowState.Maximized; Model.Buttons.Value = GetButtonsForState(current).Where(s => s != null).ToList(); } _lastState = current; RefreshTopMost(); }
public void WindowAction(AppWindowState state) { if (state == AppWindowState.Maximize && WindowState.HasFlag(AppWindowState.Maximize)) { WindowState = AppWindowState.Default; } else if (state == AppWindowState.Maximize) { WindowState = state; } else if (state == AppWindowState.CloseRequest) { WindowState = state; } else { WindowState |= state; } OnWindowAction?.Invoke(AppData); }
private CaptionButtonViewModel[] GetButtonsForState(AppWindowState current) { switch (current) { case AppWindowState.Normal: return(new[] { Create(CaptionButtonType.Minimize), Create(CaptionButtonType.Maximize), CreatePin(), CreateBox(CaptionButtonType.CompactView, CaptionButtonType.DockLeft, CaptionButtonType.DockRight, CaptionButtonType.EnterFullScreen), Create(CaptionButtonType.Close) }); case AppWindowState.Compact: return(new[] { CreatePin(), CreateBox(CaptionButtonType.NormalView, CaptionButtonType.Minimize, CaptionButtonType.Maximize, CaptionButtonType.DockLeft, CaptionButtonType.DockRight, CaptionButtonType.EnterFullScreen), Create(CaptionButtonType.Close) }); case AppWindowState.FullScreen: return(new[] { Create(CaptionButtonType.Minimize), Create(CaptionButtonType.ExitFullScreen), CreateBox(CaptionButtonType.CompactView, CaptionButtonType.NormalView, CaptionButtonType.DockLeft, CaptionButtonType.DockRight), Create(CaptionButtonType.Close) }); case AppWindowState.Maximized: return(new[] { Create(CaptionButtonType.Minimize), Create(CaptionButtonType.Restore), CreateBox(CaptionButtonType.CompactView, CaptionButtonType.NormalView, CaptionButtonType.DockLeft, CaptionButtonType.DockRight, CaptionButtonType.EnterFullScreen), Create(CaptionButtonType.Close) }); default: throw new Exception(); } }