Как закрыть вторичный вид в uwp - PullRequest
0 голосов
/ 14 февраля 2019

Я создаю приложение UWP, которое порождает второй вид помимо основного.

Я хочу закрыть второй вид из основного вида.Я уже пытаюсь найти его в Google, но в большинстве из них я только показываю, как порождать, но не закрывать.

Ниже приведен блок кода, который я использую для открытия нового представления, а в его нижней части показано, как я пытаюсьзакрыть вновь созданное представление, которое всегда заканчивается неудачей.

    public async void OpenNew(Type type, string title, string uniqueId)
    {
        CoreApplicationView newView = null;
        if (!IsExists(uniqueId))
        {
            newView = CoreApplication.CreateNewView();

            int newViewId = 0;
            await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                Frame frame = new Frame();
                Window.Current.Content = frame;
                Window.Current.Activate();
                frame.Navigate(type);

                newViewId = ApplicationView.GetForCurrentView().Id;
                ApplicationView.GetForCurrentView().Title = title;
                ApplicationView.GetForCurrentView().Consolidated += OnConsolidated;
            });

            await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
            _uniqueIds.Add(uniqueId, newViewId);
        }

        // Below code testing on how I try to close newly spawned view but always throw error
        await Task.Delay(5000).ContinueWith(async _ =>
        {
            await Window.Current.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                newView.CoreWindow.Close();
            });
        });
    }

Этот код всегда выбрасывает

Exception thrown: 'System.NullReferenceException'

Любая ссылка или учебное пособие о том, как это сделать?

1 Ответ

0 голосов
/ 14 февраля 2019

НВМ, ребята, я получил ответ.Ниже приведены мои изменения в части, где я пытаюсь закрыть 2-й вид из приведенного выше кода:

await Task.Delay(5000).ContinueWith(async _ =>
{
    await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        CoreWindow.GetForCurrentThread().Close();
    });
});
...