繁体   English   中英

如何确保 UWP 应用程序在启动时始终全屏?

[英]How to ensure UWP app is always full screen on launch?

有没有办法(C# 或 XAML)我可以最大化 UWP 应用程序 window 即使我之前在桌面上调整大小并关闭它?

我已经尝试使用ApplicationViewWindowingMode.FullScreen但这会使应用程序 go 整个全屏并覆盖 Windows 任务栏。

您可以使用ApplicationViewWindowingMode另一个值PreferredLaunchViewSize然后设置ApplicationView.PreferredLaunchViewSize但关键是要找出大小将是什么。

从理论上讲,你可以使用一个非常大的数字,窗口只会扩展到最大值。 但是,以有效像素计算屏幕尺寸可能更安全。

所以如果你只是 InitializeComponent(); 之前调用以下方法InitializeComponent(); 在您的Page面上,它应该在启动时最大化窗口。

private static void MaximizeWindowOnLoad()
{
    // Get how big the window can be in epx.
    var bounds = ApplicationView.GetForCurrentView().VisibleBounds;

    ApplicationView.PreferredLaunchViewSize = new Size(bounds.Width, bounds.Height);
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}

请注意,即使您卸载它,应用程序也会以某种方式记住这些设置。 如果您想要更改回默认行为(应用程序以前一个窗口大小启动),只需调用ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto; 一次并删除所有代码。

更新

看起来在最新的Windows 10版本中, ApplicationView.GetForCurrentView().VisibleBounds不再以有效像素返回完整的窗口大小。 所以我们现在需要一种新的方法来计算它。

事实证明它非常简单,因为DisplayInformation类还为我们提供了屏幕分辨率以及比例因子。

以下是更新的代码 -

public MainPage()
{
    MaximizeWindowOnLoad();

    InitializeComponent();

    void MaximizeWindowOnLoad()
    {
        var view = DisplayInformation.GetForCurrentView();

        // Get the screen resolution (APIs available from 14393 onward).
        var resolution = new Size(view.ScreenWidthInRawPixels, view.ScreenHeightInRawPixels);

        // Calculate the screen size in effective pixels. 
        // Note the height of the Windows Taskbar is ignored here since the app will only be given the maxium available size.
        var scale = view.ResolutionScale == ResolutionScale.Invalid ? 1 : view.RawPixelsPerViewPixel;
        var bounds = new Size(resolution.Width / scale, resolution.Height / scale);

        ApplicationView.PreferredLaunchViewSize = new Size(bounds.Width, bounds.Height);
        ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
    }
} 

如果您想在启动时最大化您的应用程序,您可以使用以下内容:

ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Maximized;

但是一定要把它放到你的页面的加载事件中,否则它不会工作!

我的点数太少,无法直接评论。 以上都没有调整为我的最大化视图(或下面的单行 ApplicationViewWindowingMode.Maximized 方法),但我已经使用了一些答案来想出对我有用的东西。 然而,它仍然很笨重。 “DisplayInformation”中给出的屏幕尺寸太大,无法直接调整页面大小。 尝试这样做是行不通的,我不得不将高度和宽度减少 60 以使其返回“真”,因此我有以下一些有用的废话,也许它会帮助其他人找到更好的答案。 它进入页面/窗口加载事件。 无需在其他地方添加任何其他内容。

        private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        var view = ApplicationView.GetForCurrentView();
        var displayInfo = DisplayInformation.GetForCurrentView();
        double x = ActualWidth;
        double y = ActualHeight;
        bool answer = true;

        // Get the screen resolution (APIs available from 14393 onward).
        var resolution = new Size(displayInfo.ScreenWidthInRawPixels-60, displayInfo.ScreenHeightInRawPixels-60);

        answer = view.TryResizeView(resolution); //This should return true if the resize is successful
        if (answer)
        {
            x = displayInfo.ScreenWidthInRawPixels - 60;
            y = displayInfo.ScreenHeightInRawPixels - 60;
        }
        answer = true;
        while (answer == true)
        {
            x++;
            answer = view.TryResizeView(new Size { Width = x, Height = y });
        }
        x = x - 1;
        answer = true;
        while (answer == true)
        {
            y++;
            answer = view.TryResizeView(new Size { Width = x, Height = y });
        }

将以App.xaml.cs添加到 App.xaml.cs 下的OnLaunched事件为我完成了。

ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen;

注意:确保在以下行之前添加它

 Window.Current.Activate();

如果您想在运行时全屏显示 go,请使用以下行。

ApplicationView.GetForCurrentView().TryEnterFullScreenMode();

我有一个衬垫,按照我预期的Justins代码工作,但由于某种原因,当使用Justins答案时,我的窗口不会最大化......但后来我改变了一些确实使它最大化但我丢失了所有流畅的设计如丙烯酸和RevealHighlite ......

所以我想出了这个衬垫,让我所有流利的设计原则都很开心:

ApplicationView.GetForCurrentView().TryEnterFullScreenMode();

需要注意的事项:

我确实试过Justins的答案,我正在使用他的MaximizeWindowOnLoad()方法,我在initializeComponent()后直接调用了它;

完整概述:

public class()
        {     
            this.InitializeComponent();
            MaximizeWindowOnLoad();   
        }

private static void MaximizeWindowOnLoad()
        { 
           ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM