如何隐藏ApplicationView

时间:2018-12-21 20:54:19

标签: c# uwp

我有一个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没有那个方法。

0 个答案:

没有答案