从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(); }