从uwp app禁用或删除关闭按钮

通用应用程序不允许删除或禁用它似乎关闭按钮。 我们可以通过全屏隐藏它。 但是当光标移动到它上面时,会带回标题栏。 有没有办法删除关闭按钮?

原因:我正在处理屏幕时间。 在允许的时间结束后,我想阻止屏幕。 我应该删除关闭按钮,以便用户无法克服我的应用程序。

编辑:删除关闭按钮不会完全帮助。 这是工作的一部分。 我只是想知道如何删除它。

使用当前发布的API,我们可以在标题栏中自定义这三个按钮的颜色。 但是没有属性或方法可用于禁用或删除这些按钮。

在UWP中,我们可以使用ApplicationView.TitleBar | titleBar属性获取标题栏如下:

ApplicationViewTitleBar titleBar = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TitleBar; 

此属性的类型是ApplicationViewTitleBar 。 它只有几个可以自定义按钮颜色的属性,如:

 titleBar.ButtonBackgroundColor = Windows.UI.Colors.White; titleBar.ButtonForegroundColor = Windows.UI.Colors.White; titleBar.ButtonHoverBackgroundColor = Windows.UI.Colors.White; titleBar.ButtonHoverForegroundColor = Windows.UI.Colors.White; titleBar.ButtonInactiveBackgroundColor = Windows.UI.Colors.White; titleBar.ButtonInactiveForegroundColor = Windows.UI.Colors.White; titleBar.ButtonPressedBackgroundColor = Windows.UI.Colors.White; titleBar.ButtonPressedForegroundColor = Windows.UI.Colors.White; 

使用这些属性可能会使关闭按钮不可见,如:
在此处输入图像描述

然而,这实际上不会隐藏这些按钮。 用户仍然可以最小化或最大化应用程序,当指针位于右上角时,他们仍然会看到关闭按钮。
在此处输入图像描述

从Windows 8.1开始,如果我们希望用户只使用应用程序而不执行任何其他操作,包括关闭应用程序,我们可以使用Kiosk模式 。 有关详细信息,请参阅Windows 8.1中的启用Kiosk模式和在Windows 10 Pro,Enterprise或Education上设置信息亭 。 但是,由于您希望在允许的时间结束后阻止屏幕,因此无法满足您的要求。

因此,UWP可能不是您需求的最佳选择。 您可以尝试使用经典桌面应用程序来实现它。

在Windows 10版本1703(版本10.0.15063)及更高版本中,您可以使用SystemNavigationManagerPreview类阻止应用程序关闭。

将此添加到您的应用清单:

    

您需要在Package元素上具有rescap命名空间:

 xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 

在主窗体的构造函数中,添加:

 var sysNavMgr = SystemNavigationManagerPreview.GetForCurrentView(); sysNavMgr.CloseRequested += OnCloseRequested; 

OnCloseRequested可以实现如下:

  private void OnCloseRequested(object sender, SystemNavigationCloseRequestedPreviewEventArgs e) { var deferral = e.GetDeferral(); e.Handled = true; deferral.Complete(); }