使WPF应用程序全屏显示(覆盖开始菜单)

66

我想让我的WPF应用程序全屏。目前,开始菜单会阻止它覆盖一切并将我的应用程序向上移动。这是我的MainWindow.xaml代码:

<Window x:Class="HTA.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    mc:Ignorable="d" 
    WindowStyle="None" ResizeMode="NoResize"
    WindowStartupLocation="CenterScreen" 
    Width="1024" Height="768">
6个回答

156

你可能忘记了添加 WindowState="Maximized",请尝试以下方法:

<Window x:Class="HTA.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
    WindowStyle="None" ResizeMode="NoResize"  
    WindowStartupLocation="CenterScreen" WindowState="Maximized">

8
<Window x:Class="HTA.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    mc:Ignorable="d" 
    ResizeMode="NoResize"
    WindowStartupLocation="CenterScreen" 
    Width="1024" Height="768"
    WindowState="Maximized" WindowStyle="None">

将窗口状态设置为最大化,窗口样式设置为无。

3
您也可以在运行时按如下方式执行:
  • 为窗口分配名称(x:Name =“HomePage”)
  • 在构造函数中将WindowState属性设置为Maximized,如下所示

HomePage.WindowState = WindowState.Maximized;


8
不应该在代码后端处理可在XAML中设置的属性。 - Peter van Kekem
2
@PetervanKekem 当窗口默认未最大化,而是通过单击按钮等方式由用户最大化时,这非常有用。 - SepehrM
真的,但在答案中它是在构造函数中设置的。(使用MVVM模式时,应该使用ViewModel类,并将WindowState绑定到属性) - Peter van Kekem

3
window.WindowStyle = WindowStyle.None;
window.ResizeMode = ResizeMode.NoResize;
window.Left = 0;
window.Top = 0;
window.Width = SystemParameters.VirtualScreenWidth;
window.Height = SystemParameters.VirtualScreenHeight;
window.Topmost = true;

适用于多屏幕


2

当你通过代码进行操作时,诀窍在于调用

WindowStyle = WindowStyle.None;

首先然后

WindowState = WindowState.Maximized;

要使它显示在任务栏上。


在代码中切换全屏和非全屏模式时,这是一个技巧。 - unkreativ

1
如果您希望用户在运行时之间更改WindowStyle.SingleBorderWindowWindowStyle.None,则可以在代码后端进行以下操作:

使应用程序全屏:
RootWindow.Visibility = Visibility.Collapsed;
RootWindow.WindowStyle = WindowStyle.None;
RootWindow.ResizeMode = ResizeMode.NoResize;
RootWindow.WindowState = WindowState.Maximized;
RootWindow.Topmost = true;
RootWindow.Visibility = Visibility.Visible;

返回单一边框样式:
RootWindow.WindowStyle = WindowStyle.SingleBorderWindow;
RootWindow.ResizeMode = ResizeMode.CanResize;
RootWindow.Topmost = false;

请注意,如果没有 RootWindow.Visibility 属性,您的窗口将无法覆盖开始菜单,但是如果您在启动时将应用程序设置为全屏,则可以跳过此步骤。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接