加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WPF全屏最大化

发布时间:2020-12-15 04:02:12 所属栏目:百科 来源:网络整理
导读:我基本上想要让我的 WPF窗口进入全屏模式,当按下F11或按下窗口右上角的最大化按钮. 虽然以下功能像一个F11的魅力: private void Window_KeyDown(object sender,KeyEventArgs e){ if (e.Key == Key.F11) { WindowStyle = WindowStyle.None; WindowState = Wi
我基本上想要让我的 WPF窗口进入全屏模式,当按下F11或按下窗口右上角的最大化按钮.

虽然以下功能像一个F11的魅力:

private void Window_KeyDown(object sender,KeyEventArgs e)
{
    if (e.Key == Key.F11)
    {
        WindowStyle = WindowStyle.None;
        WindowState = WindowState.Maximized;
        ResizeMode = ResizeMode.NoResize;
    }
}

这仍将显示Windows任务栏(使用Windows 7进行测试):

protected override void OnStateChanged(EventArgs e)
{
    if (WindowState == WindowState.Maximized)
    {
        WindowStyle = WindowStyle.None;
        WindowState = WindowState.Maximized;
        ResizeMode = ResizeMode.NoResize;
    }
    base.OnStateChanged(e);
}

我在这里缺少什么?或者我可以做得更优雅吗?

解决方法

WPF似乎在最大化时基于WindowStyle决定是全屏还是尊重任务栏.所以一个kludgy但有效的解决方案是将窗口切换回非最大化,设置WindowStyle,然后将窗口重新设置为最大化:
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);
}

虽然代码显然是丑陋的,但是过渡到正常然后回到最大化似乎并没有使用户体验更糟.在我的展示中,我注意到F11代码和kludge最大化闪烁,但是在kludge最大化方面没有明显变差.但你的里程可能会有所不同!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读