有没有办法(C#或XAML)我可以最大化UWP应用程序窗口,即使在我调整大小并先前在桌面上关闭它之后呢?
我尝试使用ApplicationViewWindowingMode.FullScreen
,但这会让应用程序全屏显示并覆盖Widnows任务栏。
答案 0 :(得分:6)
您可以使用PreferredLaunchViewSize
中的其他值ApplicationViewWindowingMode
,然后设置ApplicationView.PreferredLaunchViewSize
,但关键是要找出 size 的内容。< / p>
理论上,你可以使用一个非常大的数字,窗口只会延伸到最大值。但是,在有效像素中计算屏幕尺寸可能更安全。
因此,如果您只是在主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;
}
}
答案 1 :(得分:1)
我的观点太少,无法直接评论。以上都没有调整为我的最大化视图(或下面的单行 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 });
}
答案 2 :(得分:0)
我有一个衬垫,按照我预期的Justins代码工作,但由于某种原因,当使用Justins答案时,我的窗口不会最大化......但后来我改变了一些确实使它最大化但我丢失了所有我的流畅设计,如亚克力和RevealHighlite ......
所以我想出了这个衬垫,让我所有流利的设计原则都很开心:
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
需要注意的事项:
我确实试过Justins的答案,我正在使用他的MaximizeWindowOnLoad()方法,我在initializeComponent()之后直接调用了它;
完整概述:
public class()
{
this.InitializeComponent();
MaximizeWindowOnLoad();
}
private static void MaximizeWindowOnLoad()
{
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
}
答案 3 :(得分:0)
如果您想在启动时最大化您的应用,您可以使用以下方法:
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Maximized;
但是一定要把它放到你的页面的加载事件中,否则它不会工作!