有没有办法捕获单击 UWP 应用上的"maximize"按钮的用户?



我正试图找到一种干净的方法,当用户单击最大化按钮时,将我的应用程序置于全屏模式(而不是最大化模式(。问题是,当单击最大化按钮时,我找不到任何可以识别的事件。

我问这个问题的原因是我有一个在全屏模式下运行的UWP游戏。但是,如果用户想切换到窗口模式,他们可以。如果他们想再次回到全屏模式,我无法告诉他们正在尝试这样做。

我可以在游戏中添加一个按钮,但这感觉很俗气。

不确定它是否仍然相关,但我找到了一种解决方案。我尝试过的所有窗口大小更改方式(手动更改、最大化/向下还原/将窗口固定到屏幕边缘(都会导致CoreWindow。GetForCurrentThread((。SizeChanged事件要启动。

我还发现,与其他更改大小的方式不同,单击最大化/向下还原按钮不会调用CoreWindow。GetForCurrentThread((。ResizeStartedCoreWindow。GetForCurrentThread((。ResizeCompleted

因此,识别最大化单击的一种可能方法是添加一个布尔变量(初始化为false(,该变量在调用ResizeStarted时设置,并在调用ResizeCompleted后重置,无论何时调用SizeChanged

没有特定的事件来标识最大化按钮。但是,您可以通过对页面或框架使用sizechanged事件来找到它。然后使用ApplicationView。GetForCurrentView((。IsFullScreen来标识窗口是否最大化。

编辑:使用IsFullScreenMode,而不是IsFullScreen。IsFullScreen仅验证窗口是否接触到显示器的左侧和右侧。

public MainPage()
{
this.InitializeComponent();
YourPage.SizeChanged += YourPage_SizeChanged;
}
private  void YourPage_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (ApplicationView.GetForCurrentView().IsFullScreenMode)
{
WindowButton.Visibility = Visibility.Visible;
FullScreenButton.Visibility = Visibility.Collapsed;
}
else
{
FullScreenButton.Visibility = Visibility.Visible;
WindowButton.Visibility = Visibility.Collapsed;
}
}
private void WindowButton_Click(object sender, RoutedEventArgs e)
{
ApplicationView.GetForCurrentView().ExitFullScreenMode();
}
private void FullScreenButton_Click(object sender, RoutedEventArgs e)
{
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
}

在我的情况下,当用户单击最大化按钮时,我试图将窗口置于全屏模式。您的解决方案提供了这一点,但副作用是该窗口永远无法脱离全屏模式。一旦单击窗口模式按钮,窗口就会从全屏模式切换到窗口模式,但大小仍然充满屏幕,从而触发代码再次进入全屏模式。

@Paul Mouchet没有适合您的内置API。这是一个功能请求。我已经帮你在WPDev UserVoice上提交了它。

最新更新