WPF:在具有不同分辨率的屏幕上,即使窗口状态最大化,滚动条也会出现

时间:2015-10-07 13:13:01

标签: c# wpf

我的项目使用的是.NET 4.0,我有一个WPF应用程序和2个分辨率为1600 X 900和1920 X 1080的显示器。在第一种情况下,当我将应用程序移动到HD时,由于分辨率低,我期待滚动条分辨率监视器,并最大化它,滚动条出现X和Y轴。

当两个屏幕具有相同的分辨率1920 X 1080时,一切都运行良好,不会出现滚动条。

最大化片段:

if (screen != null)
{
    window.WindowState = System.Windows.WindowState.Normal;
    window.Left = screen.WorkingArea.Left;
    window.Top = screen.WorkingArea.Top;
    window.WindowState = System.Windows.WindowState.Maximized;
    window.Height = screen.WorkingArea.Height;
    window.Width = screen.WorkingArea.Width;
}

我知道在4.5中,我可以使用SystemCommands来最大化。但我不知道如何在4.0中解决这个问题。 我想知道即使窗口状态最大化,为什么还会显示滚动条?

3 个答案:

答案 0 :(得分:1)

我找到了解决方案,通过检查窗口组件的属性,以某种方式调整了不同分辨率监视器的resize mode属性。也许它会记住较低分辨率的调整大小模式,即使它是在高分辨率显示器上打开的。 所以下面的代码解决了我的问题。

if (screen != null)
{
    window.WindowState = System.Windows.WindowState.Normal;
    window.Left = screen.WorkingArea.Left;
    window.Top = screen.WorkingArea.Top;
    window.ResizeMode = ResizeMode.NoResize; 
    window.WindowStyle = WindowStyle.None;
    window.WindowState = System.Windows.WindowState.Maximized;
    window.Height = screen.WorkingArea.Height;
    window.Width = screen.WorkingArea.Width;
}

我希望它可以帮助那些可能被困在这里的人。

答案 1 :(得分:0)

WPF应用程序通常与您的分辨率无关。 如果你想让窗口最大化,只需使用:

 window.WindowState = System.Windows.WindowState.Maximized;

答案 2 :(得分:0)

似乎还有另一个问题。否则,不需要两次设置WindowState。也许是时候设置这些项目并不合适。 我试过" Window_Loaded"没有成功。现在我在窗口的构造函数中做了一切,一切都很好!