是否有任何方法可以捕获用户单击;最大化;UWP应用程序上的按钮?

是否有任何方法可以捕获用户单击;最大化;UWP应用程序上的按钮?,uwp,Uwp,当用户点击最大化按钮时,我试图找到一种干净的方式将我的应用程序置于全屏模式(而不是最大化模式)。问题是,当单击“最大化”按钮时,我找不到任何要识别的事件 我问这个问题的原因是我有一个在全屏模式下运行的UWP游戏。但是,如果用户想要切换窗口模式,他们可以。如果他们想再次回到全屏模式,我无法判断他们是否正试图请求 我可以在游戏中添加一个按钮,但这感觉很俗气。没有具体的事件来识别最大化按钮。但是,您可以通过为页面或框架使用sizechanged事件来找到它。然后使用ApplicationView.Ge

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

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


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

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

编辑:使用IsFullScreen模式,而不是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。这是一个功能请求。我已经帮您提交了。

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

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


因此,识别最大化单击的一种可能方法是添加一个布尔变量(初始化为false),该变量在调用ResizeStart时设置,在调用ResizeCompleted时重置,并且每当调用SizeChanged时,检查布尔值以了解是否手动更改了窗口大小,或者单击“最大化/还原”按钮。

只有“排序”功能才起作用。如果不是最大化,但仍然是全屏,IsFullScreen似乎返回true。在我的例子中,当用户单击最大化按钮时,我尝试将窗口置于全屏模式。您的解决方案提供了这一点,但其副作用是无法将窗口带出全屏模式。单击“窗口模式”按钮后,窗口将从全屏模式切换到窗口模式,但大小仍会填满屏幕,触发代码再次进入全屏模式。我更新了我的原始问题,提供了有关我试图完成的任务的更多详细信息。好的,我明白了,您需要根据屏幕大小更改按钮。如果用户处于全屏模式,则需要切换到窗口模式,否则需要切换到全屏模式。好的,我会编辑答案。我真的很感谢你的努力,但这不起作用。看起来你是在建议我在游戏中添加按钮,以实现全屏/窗口操作。那不是我要找的。我希望能够使用本机windows按钮。谢谢Xavier。我不知道开发人员反馈论坛的存在。我几乎已经放弃了这个要求,但当我有机会再次破解该代码时,我会尝试一下。我仍然不确定为什么UWP没有跟踪到这样一个基本事件。这一个有效: