可靠地使 WPF 应用程序全屏(覆盖任务栏)

Make WPF Application fullscreen (cover taskbar) reliably

我无法以覆盖任务栏的方式让我的应用全屏显示。代码多年来一直未变,在 windows 7 中运行良好,但现在转向 windows 10,我发现在不同的机器上行为是不同的。

以下是某些机器上发生的情况:

它应该是全屏的,没有任务栏,而是有一个半透明的任务栏。如果我切换到窗口模式,大小不会缩小,任务栏也不再透明。在这两种情况下,部分屏幕都被任务栏覆盖了。

这是我的代码:

<controls:MetroWindow x:Class="A...MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    xmlns:views="clr-namespace:App.Views"
    xmlns:controls1="clr-namespace:App.Controls"
    Title="App" 
    Height="768" 
    Width="1024"
    IgnoreTaskbarOnMaximize="True"  //
    WindowStyle="None"              // This should do the trick
    WindowState="Maximized"         //
    DataContext="{Binding MainWindowViewModel, Source={StaticResource ViewModelLocator}}"

我已阅读 this and this 但它并没有起到作用。设置大小是否可能与它有关?我发现它在我的开发电脑上运行良好很奇怪,但在其他一些机器上我得到了描述的行为。

好吧,如果这些都不起作用,我想你应该使用 Topmost="True"

如果您不希望它在 WindowState = Normal 时打扰其他应用程序,您可以将这些事件添加到您的 window:

private void Window_Activated(object sender, EventArgs e)
{
    // When window got focused
    Topmost = true;
}

private void Window_Deactivated(object sender, EventArgs e)
{
    // When window lost focus
    Topmost = false;
}
WindowStyle="None"    
WindowState="Maximized" 

这对我有用