У меня есть приложение 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
не имеет этого метода.