Я работаю над проектом с Windows 10 IoT Core и недавно мне удалось запустить приложение UWP из другого приложения, используя Windows.ApplicationModel.Core.AppListEntry.LaunchAsync()
,
Мой тестовый пусковой механизм — тот, который используется в Примерах IoT Microsoft, с некоторыми незначительными изменениями пользовательского интерфейса. Код, который я использую для запуска приложения:
void MainPage::StackPanel_Tapped(Object^ sender, TappedRoutedEventArgs^ e) {
auto appItem = dynamic_cast<AppListItem^>(appList->SelectedItem);
if (appItem) {
appItem->AppEntry->LaunchAsync();
}
}
(тот же код можно найти Вот)
Список приложений заполняется с помощью API PackageManager, как показано в приведенном выше примере проекта «IoTStartApp».
Когда я нажимаю на элемент, соответствующее приложение запускается на весь экран.
Поскольку у меня нет внешнего устройства, кроме сенсорного дисплея, я хотел бы встроить кнопки навигации (Домой и Назад) в мою программу запуска.
Таким образом, реальный вопрос заключается в том, позволяют ли фактические API UWP запускать другое приложение UWP внутри области моего средства запуска, чтобы оставить некоторое место для моей панели навигации? (Подобно фрейму, но вместо отображения страницы из текущего приложения она должна содержать страницу другого приложения).
Моя идея состоит в том, чтобы запустить приложение с аргументом, указывающим, с чего начать, например, LaunchInContainerAsync(Frame frame)
где frame — это мой контейнер (представьте страницу с этим контейнером и двумя моими навигационными кнопками внизу в другой сетке). XAML будет примерно таким:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Frame x:Name="ApplicationFrame" Grid.Row="0" Margin="0"/>
<Grid x:Name="NavBar" Grid.Row="1" Margin="0">
<!-- Here are my other UI elements that should stay visible during the execution of the "launched" application, such as navigation buttons. -->
</Grid>
</Grid>
Я спрашиваю об этом, потому что я помню (но я, безусловно, ошибаюсь), что были некоторые примеры от Microsoft, показывающие такое решение для запуска приложений, но теперь они перенесли (и в конечном итоге удалили) множество примеров и вики-страниц из своей документации и GitHub. РЕПО.
Если это невозможно, каковы другие навигационные решения? Кто-нибудь успешно создал модуль запуска для Windows 10 IoT Core, который работает только с сенсорным дисплеем?
AFAIK, это нельзя сделать в Windows IoT Core, потому что либо приложение запуска, либо запущенное приложение выполняется как само приложение переднего плана, и только один передний план держит весь пользовательский интерфейс под рукой. Так что «оставить место для моей навигационной панели» кажется невозможным.
Но в качестве обходного пути вы можете добавить URI приложения запуска (например, домашнее приложение в следующем примере) или его отображаемое имя и описание, полученные из API AppListEntry, к другим приложениям, которые вы собираетесь запустить, чтобы у недавно запущенного приложения была возможность перейти вернуться к приложению лаунчера. Как в этом примере:IoTHomeApp».
OemApp2:
Других решений пока нет …