最大化自己的窗口不会覆盖整个屏幕

时间:2018-07-10 07:44:03

标签: c# wpf maximize-window

这是我用于最大化自己的窗口的代码:

private void maximizeWindow(object sender, RoutedEventArgs e)
{
    this.Width = SystemParameters.WorkArea.Width;
    this.Height = SystemParameters.WorkArea.Height; 
}

这是代码的行为:

no Maximizing

with maximizing

所以问题是,当我最大化窗口时,屏幕会最大化,但是窗口未位于中心,我总是必须将屏幕向左上方移动才能看到整个屏幕。

3 个答案:

答案 0 :(得分:2)

如果要最大化窗口,则应将<script> var value = document.getElementById("data").innerHTML; $.notify(value); </script> 属性设置为WindowState

WindowState.Maximized

答案 1 :(得分:1)

答案2.0

由于知道要使窗口最大化而不覆盖任务栏,因此我建议您使用WindowChrome

<Window x:Class="MejirdrituTeWarqoudear.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="540" Height="360">
    <WindowChrome.WindowChrome>
        <WindowChrome CornerRadius="0" />
    </WindowChrome.WindowChrome>
    <Window.Template>
        <ControlTemplate TargetType="Window">
            <Border Name="Bd">
                <AdornerDecorator>
                    <Border Background="{TemplateBinding Background}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            BorderBrush="{TemplateBinding BorderBrush}">
                        <ContentPresenter />
                    </Border>
                </AdornerDecorator>
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="WindowState" Value="Maximized">
                    <Setter TargetName="Bd" Property="Padding" Value="8" />
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Window.Template>
    <Border BorderThickness="8" BorderBrush="Teal" />
</Window>

通过将WindowState设置为Maximized,该窗口将像普通窗口一样最大化而不覆盖任务栏。

  1. 您可能会发现我为Template添加了Window。我编写模板以在窗口最大化时添加额外的填充。如果将其删除,则会发现窗口最大化后将失去一些边缘。无论您的DPI值是什么,该值都是8
  2. WindowChrome帮助您将客户区UI扩展到非客户区。因此,您无需再次将窗口设置为透明。删除AllowsTransparency="True"WindowStyle="None"属性。

答案1.0

如果您只关心主屏幕:

// If you only cover the primary screen.
Left = 0.0;
Top = 0.0;
Width = SystemParameters.PrimaryScreenWidth;
Height = SystemParameters.PrimaryScreenHeight;

如果您需要多个屏幕:

// If you have more than one screen monitors, The code below covers the whole screen area.
Left = SystemParameters.VirtualScreenLeft;
Top = SystemParameters.VirtualScreenTop;
Width = SystemParameters.VirtualScreenWidth;
Height = SystemParameters.VirtualScreenHeight;

答案 2 :(得分:0)

您还需要设置WPF窗口的位置。添加以下内容以及您的代码:

this.Left = 0;
this.Top = 0;