关于c#:WPF Metro Window全屏

WPF Metro Window full screen

我目前正在使用WPF应用程序,但找不到如何全屏显示应用程序。
我正在使用MahApps.Metro,所以主窗口的类型为Controls.MetroWindow。

我尝试了这个:

1
2
3
4
5
6
7
8
9
<Controls:MetroWindow x:Class="MyProject.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:MyProject.Views"
                      WindowStyle="None"
                      ResizeMode="NoResize"
                      WindowState="Maximized"
                      Title="MyProject">

但是它不会隐藏Windows任务栏。 但是当我使用简单的Window时,它可以工作。 我查看了MetroWindow源代码,它继承了Window类,所以我不明白为什么它不起作用。

我发现Metro拥有全屏窗口的唯一方法是将IgnoreTaskbarOnMaximize属性设置为true并删除ResizeMode =" NoResize"(请参见下面的代码),运行应用程序并将其最大化。

1
2
3
4
5
6
7
8
<Controls:MetroWindow x:Class="MyProject.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:MyProject.Views"
                      WindowStyle="None"
                      IgnoreTaskbarOnMaximize="True"
                      Title="MyProject">

但是我想隐藏"最小化和最大化"按钮。
您有什么想法可以全屏启动Controls.MetroWindow吗?


我可以重现您的问题。 您应该在这里将其报告为错误

现在,简单的解决方法可能是:

保持与您相同的xaml:

1
2
3
4
5
6
7
8
<Controls:MetroWindow x:Class="MyProject.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:MyProject.Views"
                      WindowStyle="None"
                      IgnoreTaskbarOnMaximize="True"
                      Title="MyProject">

并在Window的代码中:

1
2
3
4
5
6
7
8
9
10
11
12
public MainWindow() {
  InitializeComponent();
  Loaded += OnLoaded;
}

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs) {
  WindowState = WindowState.Maximized;
  ResizeMode = ResizeMode.NoResize;
  ShowMaxRestoreButton = false;
  ShowMinButton = false;
  Loaded -= OnLoaded;
}

这将为您提供所需的行为。 我们几乎设置了状态(最大化),使用Loaded事件隐藏了最小/最大按钮,并且只执行了一次。


使用最新的Alpha版本,您可以通过两种不同的方式来实现:

第一

1
2
3
4
5
6
7
8
9
<Controls:MetroWindow x:Class="MyProject.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:MyProject.Views"
                      ResizeMode="NoResize"
                      WindowState="Maximized"
                      IgnoreTaskbarOnMaximize="True"
                      Title="MyProject">

第二

1
2
3
4
5
6
7
8
<Controls:MetroWindow x:Class="MyProject.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:MyProject.Views"
                      UseNoneWindowStyle="True"
                      WindowState="Maximized"
                      Title="MyProject">

在第二种解决方案中,您也没有标题栏,最小,最大,关闭按钮