WPF Metro Window全屏

时间:2013-09-10 14:40:11

标签: c# wpf xaml fullscreen mahapps.metro

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

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

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

但我想隐藏Minimize和Maximize按钮.. 你有什么想法全屏启动Controls.MetroWindow吗?

2 个答案:

答案 0 :(得分:13)

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

简单解决方法目前可以是:

让你的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的代码隐藏:

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

答案 1 :(得分: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">

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