2014-02-26 58 views
1

我的窗口有WindowStyle="None"ResizeMode="CanResize",因此最大化它覆蓋了任務欄。我有一個解決方法設置MaxWidth和MaxHeight工作區維度最大化之前,它工作良好時任務欄關閉,但是當任務欄在屏幕窗口的左側仍然位置0,0,並在它下面。爲最大化窗口設置保證金

我想將最大化窗口的TopLeft偏移到WorkArea的TopLeft。 窗口具有保證金屬性,但似乎不起作用。

我試過,但似乎最大化窗口不能移動/抵消。

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); 
     } 

有關變通方法的想法?

回答

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

+0

你誤會了,我已經有此設置,但問題在於當任務欄停靠在左側時,最大化窗口將變爲任務欄下的0,0,而左側具有空白空間。 – Daniel

+0

您可能會發現此鏈接有幫助,然後http://stackoverflow.com/questions/14799691/wpf-maximizing-borderless-window-by-taking-in-account-the-user-taskbar – SwDevMan81

+0

這並不真正最大化窗口。我仍然有邊框,我仍然可以移動它,並且用戶可以將窗口拖到頂邊,並且它將被真正地最大化。即使我可以攔截這個信息,我仍然會即興發揮。 – Daniel