设置最大化窗口的边距

时间:2014-02-26 16:39:20

标签: c# wpf

我的窗口有WindowStyle="None"ResizeMode="CanResize",因此最大化它会覆盖任务栏。我有一个解决方法,在最大化之前将MaxWidth和MaxHeight设置为WorkArea尺寸,当任务栏关闭时它工作得很好,但当任务栏位于屏幕左侧时,仍然位于0,0位于其下方。

我想将最大化窗口的TopLeft偏移到WorkArea的TopLeft。 Window有margin属性,但似乎不起作用。

我试过以下,但似乎最大化的窗口无法移动/偏移。

 private void mywindow_StateChanged(object sender, EventArgs e)
    {
      if (this.WindowState == WindowState.Maximized)
      {
        MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
        MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
        double ScreenXOffset = System.Windows.SystemParameters.WorkArea.TopLeft.X; 

        mywindow.Left = ScreenXOffset;
        mywindow.Margin = new Thickness(ScreenXOffset,0,0,0);
      }

关于解决方法的想法?

1 个答案:

答案 0 :(得分:0)

您可以将窗口的MaxHeight设置为MaximizedPrimaryScreenHeight

public MainWindow()
{
    InitializeComponent();
    this.MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
}

您可能还希望设置窗口的MaxWidth

public MainWindow()
{
    InitializeComponent();
    this.MaxWidth= SystemParameters.MaximizedPrimaryScreenWidth;
    this.MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
}

你也可以使用DynamicResource:

<Window
    Width="{DynamicResource 
      {x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}"
    Height="{DynamicResource
      {x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}"
    WindowStartupLocation="CenterScreen"
    WindowStyle="SingleBorderWindow">
   ...
</Window>

有关左侧任务栏的问题,请参阅Maximizing borderless window by taking in account the user taskbar