WPF full screen on maximize

后端 未结 9 1879
醉话见心
醉话见心 2021-02-04 12:56

I basically want to have my WPF window to go in full screen mode, when F11 is pressed or the maximize button in the right top corner of the window is pressed.

While the

9条回答
  •  日久生厌
    2021-02-04 13:13

    WPF seems to be making the decision about whether to go full-screen or respect the taskbar based on the WindowStyle at the time of maximisation. So a kludgy but effective solution is to switch the window back to non-maximised, set the WindowStyle, and then set the window back to maximised again:

    private bool _inStateChange;
    
    protected override void OnStateChanged(EventArgs e)
    {
      if (WindowState == WindowState.Maximized && !_inStateChange)
      {
        _inStateChange = true;
        WindowState = WindowState.Normal;
        WindowStyle = WindowStyle.None;
        WindowState = WindowState.Maximized;
        ResizeMode = ResizeMode.NoResize;
        _inStateChange = false;
      }
      base.OnStateChanged(e);
    }
    

    Although the code is obviously ugly, the transition to Normal and then back to Maximized doesn't seem to make the user experience any worse. On my display, I noticed flicker with both the F11 code and the kludge maximise, but not noticeably worse on the kludge maximise. But your mileage may vary!

提交回复
热议问题