让我的wpf应用程序全屏(封面任务栏和窗口标题栏)

我想让我的应用程序可以最大化到全屏幕意味着它也隐藏了Windows任务栏和标题栏。 它应该由一个按钮触发。

我正在尝试像这样开发我的应用程序窗口。 在此处输入图像描述

在下面添加我的代码段

 

您需要将WindowStyle设置为none,将WindowState设置为Maximized

  

您需要将ResizeMode设置为NoResize,将WindowState设置为Maximized

   

试试这个:

  

如果任务栏没有消失,更改窗口样式之前和之后更改窗口可见性可能会有所帮助,如下所示:

  private void MainWindow_StateChanged(object sender, EventArgs e) { if (this.WindowState == WindowState.Maximized) { // hide the window before changing window style this.Visibility = Visibility.Collapsed; this.Topmost = true; this.WindowStyle = WindowStyle.None; this.ResizeMode = ResizeMode.NoResize; // re-show the window after changing style this.Visibility = Visibility.Visible; } else { this.Topmost = false; this.WindowStyle = WindowStyle.SingleBorderWindow; this.ResizeMode = ResizeMode.CanResize; } } 

您只需将WindowStyle设置为none:

  

第1步:使用静态方法编写类使用任务栏的Hide()和Show()

 public class Taskbar { [DllImport("user32.dll")] private static extern int FindWindow(string className, string windowText); [DllImport("user32.dll")] private static extern int ShowWindow(int hwnd, int command); private const int SW_HIDE = 0; private const int SW_SHOW = 1; protected static int Handle { get { return FindWindow("Shell_TrayWnd", ""); } } private Taskbar() { // hide ctor } public static void Show() { ShowWindow(Handle, SW_SHOW); } public static void Hide() { ShowWindow(Handle, SW_HIDE); } } 

第2步:连接到窗口关闭事件,当窗口将以Alt + F4关闭时,返回任务栏

 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { Taskbar.Show(); } 

隐藏任务栏并显示全屏:

 Taskbar.Hide(); WindowStyle = WindowStyle.None; WindowState = WindowState.Maximized; ResizeMode = ResizeMode.NoResize; Width = System.Windows.SystemParameters.PrimaryScreenWidth; Height = System.Windows.SystemParameters.PrimaryScreenHeight; Topmost = true; Left = 0; Top = 0; 

显示任务栏并在窗口中运行

 Taskbar.Show(); WindowStyle = WindowStyle.SingleBorderWindow; WindowState = WindowState.Normal; ResizeMode = ResizeMode.CanResize; Width = System.Windows.SystemParameters.WorkArea.Width-100; Height = System.Windows.SystemParameters.WorkArea.Height-100; Topmost = false; Left = 0; Top = 0; 

在Windows 10 1703上测试(创作者更新)

在此处输入图像描述

我遇到了这个问题,任务栏停留在窗口顶部。 我使用的当前解决方案是将窗口设置为Topmost一小段时间,然后将其设置为false(我希望我的窗口与Alt + Tab一起工作)

 private Timer t; public void OnLoad() { var window = Application.Current.Windows.OfType().SingleOrDefault(x => x.IsActive); StartTopmostTimer(window); } private void StartTopmostTimer(Window window) { t = new Timer(o => SetTopMostFalse(window), null, 1000, Timeout.Infinite); } private void SetTopMostFalse(Window window) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { window.Topmost = false; })); t.Dispose(); } 

我还使用此代码在全屏和窗口模式之间切换:

 public void SwitchFullScreen() { var window = Application.Current.Windows.OfType().SingleOrDefault(x => x.IsActive); if (window != null) { if (window.WindowStyle == WindowStyle.None) { window.WindowStyle = WindowStyle.SingleBorderWindow; window.WindowState = state; } else { state = window.WindowState; window.WindowStyle = WindowStyle.None; window.WindowState = WindowState.Maximized; window.Topmost = true; StartTopmostTimer(window); } } } 

只需将此事件处理程序挂钩到表单的Loaded事件,就可以正常工作。
不要在表单的构造函数中应用这些东西(这对我不起作用)。

  private void aWindow_Loaded(object sender, RoutedEventArgs e) { MaxHeight = SystemParameters.FullPrimaryScreenHeight; MaxWidth = SystemParameters.FullPrimaryScreenWidth; Width = SystemParameters.FullPrimaryScreenWidth; Height = SystemParameters.FullPrimaryScreenHeight; WindowState = WindowState.Maximized; ResizeMode = ResizeMode.NoResize; Left = 0; Top = 0; Topmost = true; ShowInTaskbar = false; //throw new NotImplementedException(); }