有什么方法可以捕获单击UWP应用程序上的“最大化”按钮的用户?

时间:2018-12-03 17:04:41

标签: uwp

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

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

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

3 个答案:

答案 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 时,检查布尔值以了解是否手动更改了窗口大小,或者单击最大化/还原向下。