2014-12-19 67 views
4

我想要製作加載全屏的WPF應用程序,並在全屏和窗口之間切換F11鍵。WPF全屏切換仍顯示桌面的一部分

使用以下代碼,它將首先以全屏模式正確顯示在屏幕上。切換將其拉回到常規窗口。

然後隨後切換它差不多進入全屏模式,但似乎向上移動了大約10個像素,所以任務欄的一半是可見的。我可以在一個空的主窗口的新WPF項目中重現這一點。

public partial class MainWindow : Window { 
    public MainWindow() { 
     InitializeComponent(); 
     this.WindowState = WindowState.Maximized; 
     this.WindowStyle = WindowStyle.None; 
     this.ResizeMode = ResizeMode.NoResize; 
     this.Topmost = true; 
     this.PreviewKeyDown += 
      (s, e) => { 
       if (e.Key == Key.F11) { 
        if (this.WindowStyle == WindowStyle.None) { 
         this.WindowState = WindowState.Normal; 
         this.WindowStyle = WindowStyle.SingleBorderWindow; 
         this.ResizeMode = ResizeMode.CanResize; 
         this.Topmost = false; 
        } else { 
         this.WindowState = WindowState.Maximized; 
         this.WindowStyle = WindowStyle.None; 
         this.ResizeMode = ResizeMode.NoResize; 
         this.Topmost = true; 
        } 
       } 
      }; 
    } 
} 

這是一個框架中的錯誤?我無法想象到現在它會被忽視,但我不知道我做錯了什麼。這些是應該做這項工作的財產,他們幾乎工作,但不完全。我試過與其他Window設置搞亂,但沒有運氣。有任何想法嗎?

+0

我想你的代碼之前設置WindowStyle,它很好地工作,形成了我,用一個簡單的形式,並在其上沒有成分... – LPs

回答

9

根據此WPF Discussion,設置WindowStyleWindowState的順序很重要。您應該WindowState

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     this.ResizeMode = ResizeMode.NoResize; 
     this.WindowStyle = WindowStyle.ToolWindow; 
     this.WindowState = WindowState.Maximized; 
     this.Topmost = true; 
     this.PreviewKeyDown += 
      (s, e) => 
      { 
      if (e.Key == Key.F11) 
      { 
       if (this.WindowStyle != WindowStyle.SingleBorderWindow) 
       { 
        this.ResizeMode = ResizeMode.CanResize; 
        this.WindowStyle = WindowStyle.SingleBorderWindow; 
        this.WindowState = WindowState.Normal; 
        this.Topmost = false; 
       } 
       else 
       { 
        this.ResizeMode = ResizeMode.NoResize; 
        this.WindowStyle = WindowStyle.ToolWindow; 
        this.WindowState = WindowState.Maximized; 
        this.Topmost = true; 
       } 
      } 
      }; 
    } 
} 
+1

出色答卷!榮譽@ SwDevMan81! –