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

时间:2017-06-13 10:34:10

标签: c# wpf wpf-controls fullscreen

我无法以涵盖任务栏的方式全屏显示我的应用。代码已经多年没有变化,并且在Windows 7中运行良好但现在转向Windows 10我发现在不同的机器上行为是不同的。

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

enter image description here

如果没有任务栏,它应该是从边缘到边缘的全长,而是有一个半透明的任务栏。如果我切换到窗口模式,大小不会缩小,任务栏不再透明。两种情况都有一些屏幕被任务栏覆盖。

这是我的代码:

<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}}"

我已阅读thisthis,但它没有做到这一点。是否有可能设置尺寸与它有关?我觉得奇怪的是它在我的开发者电脑上工作正常,但在其他一些机器上我得到了描述的行为。

2 个答案:

答案 0 :(得分:2)

好吧,如果没有这些工作,我想你应该使用Topmost="True"

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

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

答案 1 :(得分:0)

WindowStyle="None"    
WindowState="Maximized" 

这对我有用