我有一个UWP应用程序,它创建了另一个视图,例如:
overlayView = CoreApplication.CreateNewView();
然后显示它工作正常。
我还想在用户按下按钮时隐藏视图,但不破坏视图。
我该怎么办?
我的代码是:
if (!isOverlayShowing)
{
isOverlayShowing = true;
if (overlayView == null)
{
overlayView = CoreApplication.CreateNewView();
await overlayView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, OverlayHandler);
ApplicationViewSwitcher.DisableSystemViewActivationPolicy();
}
await ApplicationViewSwitcher.TryShowAsStandaloneAsync(overlayViewID);
overlayView.CoreWindow.IsInputEnabled = false;
}
和叠加层创建者是:
void OverlayHandler()
{
overlayFrame = new Frame();
overlayFrame.BorderThickness = new Thickness(0);
Window.Current.Content = overlayFrame;
// You have to activate the window in order to show it later.
Window.Current.Activate();
overlayFrame.Background = new SolidColorBrush(Colors.Green);
overlayViewID = ApplicationView.GetForCurrentView().Id;
}
我试图用以下方法隐藏它:
async Task<int> HideBlinkFrame()
{
if(overlayView == null || isOverlayShowing == false)
{
return 1;
}
await overlayFrame.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
overlayFrame.Visibility = Visibility.Collapsed;
});
isOverlayShowing = false;
return 0;
}
但这只是隐藏内部框架,而不是窗口。
我看到ApplicationView
有一个TryConsolidateAsync()
,但是CoreApplicationView
没有那个方法。