コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
            }
        }