当用户单击最大化按钮时,我试图找到一种干净的方法将我的应用程序置于全屏模式(而不是最大化模式)。问题是,单击最大化按钮时找不到任何事件可识别。
我问这个问题的原因是我有一个在FullScreenMode下运行的UWP游戏。但是,如果用户要切换到窗口模式,则可以。如果他们想再次返回到全屏模式,则无法告诉我他们正在尝试请求。
我可以在游戏上添加一个按钮,但这感觉很俗气。
答案 0 :(得分:0)
没有特定事件可识别最大化按钮。但是,您可以通过为页面或框架使用 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();
}
答案 1 :(得分:0)
就我而言,当用户单击最大化按钮时,我试图将窗口置于全屏模式。您的解决方案可以做到这一点,但是副作用是永远无法将窗口从全屏模式中移出。单击窗口模式按钮后,窗口将从全屏模式切换到窗口,但是大小仍会填满整个屏幕,从而触发代码再次进入全屏模式。
@Paul Mouchet没有适合您的内置API。这是功能请求。我已经帮助您在WPDev UserVoice上提交了它。
答案 2 :(得分:0)
不知道它是否仍然有用,但是我找到了一种解决方案。 我尝试的所有窗口大小更改方式(手动更改,最大化/还原/将窗口固定在屏幕边缘)都会导致 CoreWindow.GetForCurrentThread()。SizeChanged 事件触发。
我还发现,与其他大小更改方式不同,单击最大化/还原向下按钮不会调用 CoreWindow.GetForCurrentThread()。ResizeStarted 和 CoreWindow.GetForCurrentThread() .ResizeCompleted 。
因此,识别最大化点击的一种可能方法是添加一个布尔变量(初始化为false),该变量在调用 ResizeStarted 时设置,并在 ResizeCompleted 时复位。调用strong>,并且每当调用 SizeChanged 时,检查布尔值以了解是否手动更改了窗口大小,或者单击最大化/还原向下。