Как восстановить основной вид приложения UWP, когда основной вид приложения закрыт, но дополнительный вид все еще открыт и открывается приложение из меню «Пуск»? - PullRequest
0 голосов
/ 08 октября 2018

Я занимаюсь разработкой приложения UWP с несколькими представлениями.(Скажем, я открываю настройки своего приложения в отдельном окне.) Мне нужно восстановить основной вид моего приложения в следующем сценарии.

  1. Открыть приложение.
  2. Открыть настройки приложения вдополнительный вид.
  3. Закройте основной вид приложения и оставьте окно настроек открытым.
  4. Откройте приложение из меню «Пуск» или щелкнув значок ярлыка приложения.

Вышеуказанное действие возвращает меня к уже открытому дополнительному виду (окно настроек).Но мне нужно открыть основной вид приложения.

В моем файле App.xaml.cs, метод OnLaunched, CoreApplication.GetCurrentView().IsMain дает мне true, но CoreApplication.GetCurrentView().IsHosted дает мне false.Я пробовал с CoreApplication.GetCurrentView().CoreWindow.Activate() & Window.Current.Activate();, но оба не помогли, просто я перехожу к дополнительному виду (окну настроек), который остается открытым.

Как вызвать основной вид моего UWPприложение?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я нашел решение своей проблемы.Моим требованием было, когда главное окно приложения было закрыто, но вторичное окно все еще открыто, и пользователь пытается открыть приложение из меню «Пуск» или, щелкнув значок приложения, я должен открыть основной вид приложения.в отдельном окне, не закрывая вторичный вид / окно, где в данный момент находится пользователь.Другими словами, просто поместите главное окно приложения впереди и позвольте второму окну быть там, как оно находится позади главного окна.Так что теперь у нас будет 2 окна на экране:

1. Главное окно

2. Уже открытое дополнительное окно.

Я добился этого с помощью приведенного ниже кода.

В файле App.xaml.cs, метод OnLaunched(LaunchActivatedEventArgs e), аргумент LaunchActivatedEventArgs e имеет свойство с именем CurrentlyShownApplicationViewId, которое дает идентификатор представления, где в данный момент находится пользователь (если открыто какое-либо представление приложения).).

ApplicationView.GetApplicationViewIdForWindow(CoreApplication.GetCurrentView().CoreWindow) дает идентификатор основного вида приложения.

С этими двумя идентификаторами я могу открыть главное окно своего приложения с помощью приведенного нижекод.

Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
 await ApplicationViewSwitcher.TryShowAsStandaloneAsync(
       ApplicationView.GetApplicationViewIdForWindow(
       CoreApplication.GetCurrentView().CoreWindow), 
       ViewSizePreference.Default, e.CurrentlyShownApplicationViewId, 
       ViewSizePreference.Default);
});

ApplicationViewSwitcher.TryShowAsStandaloneAsync возвращает главное окно моего приложения впереди, в отдельном окне, оставляя вторичное окно без изменений.Так что теперь у пользователя есть 2 окна - главное окно приложения и существующее дополнительное окно.

0 голосов
/ 09 октября 2018

По вашему требованию вы можете сослаться на MultipleViews официальный пример кода.И он переключился на основной вид действия.Вы можете использовать его для переключения на событие основного вида, если основной вид закрыт.

enter image description here

private async void GoToMain_Click(object sender, RoutedEventArgs e)
{
    // Switch to the main view without explicitly requesting
    // that this view be hidden
    thisViewControl.StartViewInUse();
    await ApplicationViewSwitcher.SwitchAsync(mainViewId);
    thisViewControl.StopViewInUse();
}
...