1

Я хотел бы иметь второй, (и более) окна для моего окна универсального приложения для работы на ПК. Но, к моему удивлению, это не кажется легким. Например, в WPF я мог бы добавить в проект новый элемент и выбрать окно. В Universal нет «окна» в новых элементах. Я могу объявить объект класса windows.ui.xaml.window, но я не могу его создать (нет нового) или показать его. Как запустить другое окно? СпасибоНесколько окон, Windows Universal

+1

Это собственная функция шаблона 10 для UWP: https://github.com/Windows-XAML/Template10/blob/master/Template10%20(Library)/Services/NavigationService/NavigationService.cs#L133 –

ответ

2

Существует sample available on Microsoft's UWP GitHub repo, который охватывает создание нескольких видов для вашего приложения. Я могу предоставить более подробную информацию или помощь, если вам это нужно

+1

Точно, что Мне нужно, большое спасибо – Ianb

+0

Хорошо, что делает новые окна - но это ужасно сложно! В WPF, например, я мог бы просто создать новое окно и поместить некоторые элементы управления на него вместе с дизайнером и просто сделать что-то вроде dim w, как новый MyWindow, w.show - есть ли эквивалент этого в универсальном? – Ianb

+2

@ Ianb - он не может быть таким же, как WPF, и по-прежнему быть переносимым на разных платформах Windows (например, Phone, Xbox) и когда Windows Desktop работает в режиме планшета. К сожалению, управление вторичными Windows, к сожалению, более сложное для обработки этих сценариев. – WiredPrairie

1

в конечном итоге найти то, что является довольно просто, занимает страницу по типу, создает его и окно с ним внутри, и возвращает объект страницы, созданный:

async Task<Page> CreatePageWindowAsync(Type p) 
    { 
     CoreApplicationView newView = CoreApplication.CreateNewView(); 
     int newViewId = 0; 
     Page pg = null; 
     await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
     { 
      Frame frame = new Frame(); 
      frame.Navigate(p, null); 
      Window.Current.Content = frame; 
      Window.Current.Activate(); 
      newViewId = ApplicationView.GetForCurrentView().Id; 
      pg = frame.Content as Page; 
     }); 
     bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId); 
     return (pg); 
    }