11

我目前正在开发一个 WPF 应用程序,但我不知道如何使我的应用程序全屏显示。我正在使用 MahApps.Metro,所以我的主窗口类型是 Controls.MetroWindow。

我试过这个:

<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 任务栏。但是当我使用一个简单的窗口时它可以工作。我查看了 MetroWindow 源代码,它继承了 Window 类,所以我不明白为什么它不起作用。

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

<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 吗?

4

2 回答 2

14

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

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

保持您的 xaml 与您必须的相同:

<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's 代码隐藏中:

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事件隐藏最小/最大按钮并且只做一次。

于 2013-09-10T14:58:58.430 回答
5

使用最新的alpha版本,您有两种不同的方法来获得它:

第一的

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

第二

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

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

于 2013-11-13T11:51:35.430 回答