WPF窗口最大化宽度和高度

时间:2018-07-03 08:09:48

标签: c# wpf xaml window fullscreen

TL; DR

在最大化时,将AllowTransparency设置为True似乎会使窗口上下偏移8个像素,我需要将其重新显示在屏幕上。

深入

似乎我在某个地方犯了一个错误,但不确定为什么。我无法发布整个代码,但是我会尝试在此处编写所有相关内容。

我有主窗口,其中有一个自定义标题栏。这意味着我必须将WindowsStyle设置为None,而且我还在使用模板。从一开始,我就遇到了窗口最大化而不是桌面更大的问题。在所有屏幕上,屏幕偏离了8个像素。我放弃了模板,并尝试更改现有窗口以满足我的需要。通过将AllowTransparency设置回false,我设法摆脱了两侧的泄漏。然后发生的问题是窗口顶部的边框,我通过将CaptionHeight的{​​{1}}设置为0来删除了该边框。

好的,泄漏消失了。但是我相信我当前的问题与我上面写的有关。也就是说,我无法将宽度和高度绑定到某些东西,没有合适的属性。这是我在WindowChrome中尝试过的:

SystemParameters

所需的实际高度(1048)在SystemParameters.FullPrimaryScreenHeight; SystemParameters.FullPrimaryScreenWidth; SystemParameters.MaximizedPrimaryScreenHeight; SystemParameters.MaximizedPrimaryScreenWidth; SystemParameters.PrimaryScreenHeight; SystemParameters.PrimaryScreenWidth; SystemParameters.WorkArea.Height; SystemParameters.WorkArea.Width; SystemParameters.VirtualScreenWidth; (1040)和SystemParameters.WorkArea.Height(1056)之间。

所需的实际宽度(1928)在SystemParameters.MaximizedPrimaryScreenHeight(1920)和SystemParameters.WorkArea.Width(1936)之间。

您可以在这里看到图案。

  • MaximizedPrimaryScreenWidth和MaximizedPrimaryScreenHeight都比我需要的像素大8个像素
  • WorkArea.Width和WorkArea.Height都比我需要的小8个像素
  • 以前我的所有面都漏了8个像素

这是我的窗口代码

SystemParameters.MaximizedPrimaryScreenWidth

什么也不行:

<Window x:Class="MyApp.MainWindow"
        ...
        WindowState="Normal" 
        ResizeMode="CanResizeWithGrip"
        MaxHeight="{Binding SystemParameters.WorkArea.Height}"
        WindowStyle="None">
    <WindowChrome.WindowChrome>
        <WindowChrome CaptionHeight="0"/>
    </WindowChrome.WindowChrome>
    ....content....
</Window>

我拥有但不想要的东西

- Window.Padding
- Window.Margin
- Window.Top
- WindowStyle="SingleBorderWindow"

更新:SingleBorderWindow

使用XAML: MaxWidth="{Binding MaximumWidth}" C# public double MaximumWidth { get { // I don't want anything hard-coded. // Some other (correct) parameter would be fine as well, // if we can't get the window on screen. return SystemParameters.WorkArea.Width + 8; } } 时会发生这种情况。

enter image description here

因此,我的窗口不仅左右边缘都短了8个像素(绑定到WorkArea时),而且您可以看到后面的实际窗口并且可以单击按钮(即使它们不可见)。真的很奇怪。就像有两个窗口,但只有我需要的一个窗口不在正确的位置。

2 个答案:

答案 0 :(得分:0)

  

所需的实际高度(1048)在   SystemParameters.WorkArea.Height(1040)和   SystemParameters.MaximizedPrimaryScreenHeight(1056)。

     

所需的实际宽度(1928年)介于   SystemParameters.WorkArea.Width(1920)和   SystemParameters.MaximizedPrimaryScreenWidth(1936)。

我认为您需要了解Windows分辨率以帮助您解决此问题,并且

  

我相信15英寸窗口的分辨率为1366 X 768,宽x高

,因此您使用高于此分辨率的分辨率将使您的应用程序的尺寸大于默认系统分辨率。希望有帮助

答案 1 :(得分:0)

哦。如果我猜对了,在某些情况下,为了使您的窗口最大化,可以在对我们隐藏的代码中,将其宽度更改为SystemParameters.MaximizedPrimaryScreenWidth。 错误。绑定到WindowState并将其更改为WindowState.Maximized。