【问题标题】:WPF Metro Window full screenWPF Metro 窗口全屏
【发布时间】:2013-09-10 14:40: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 吗?

【问题讨论】:

  • 这是 MahApps.Metro 窗口的固有属性。 MahApps.Metro 的默认窗口有几个 P/Invokes 以防止窗口在最大化时覆盖任务栏。

标签: c# wpf xaml fullscreen mahapps.metro


【解决方案1】:

我可以重现您的问题。您应该将其报告为错误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 事件隐藏最小/最大按钮,并且只执行一次。

【讨论】:

【解决方案2】:

使用最新的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">

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-24
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2013-04-07
    • 1970-01-01
    相关资源
    最近更新 更多