在 UWP 应用程序中打开 UWP

Opening a UWP within a UWP application

也许是一个很奇怪的要求...

我们正在考虑构建一个 Windows 10 UWP 应用程序,该应用程序可以在其中打开网站和其他 UWP 应用程序。我想主要问题是...

在 Windows 10 UWP 中,是否有可以打开另一个 UWP 的控件(例如 UWP 的 WebView?)

我们的想法(我们还没有开始编写那么多代码,因为我们目前 "blueprinting")是实现一个带有 SplitView(汉堡包控件)的应用程序,每个按钮都会将框架更改为 Weblink 或 link 到另一个 UWP 应用程序 - 例如天气。

当用户单击一个选项时,这将更改主框架以访问该内容...无需离开应用程序 - 将其视为锁定的信息亭(安全)。

我猜没有开箱即用的解决方案,但我想我会问 :)

谢谢! 马特

如果我没看错的话,我认为完全不可能找到您要找的东西。事实上,UWP 应用模型的关键词是应用的隔离或容器化。

这并不意味着应用程序不会相互交互——UWP 应用程序模型确实允许应用程序与基于 URL 的 activation/communication 进行交互;如果它满足您的要求,也许这就是您需要探索的内容。您可能想从 here 开始了解一些背景信息。

就是说,您可以设计 UI 来模仿其他应用程序是否包含在 splitview 或任何容器中(对用户来说是一种错觉)。也就是说,不同隔间中的UI只是后台与其他应用程序URL通信的视图模型。

不,你不能,windows 应用程序旨在保护数据。

但是你可以做的是启动另一个应用程序,任何注册到 uri 的应用程序 以下来自 msdn 的代码显示了如何将您自己的应用程序绑定到 uri,然后调用它。

var options = new Windows.System.LauncherOptions();
options.PreferredApplicationPackageFamilyName= "Contoso.URIApp_8wknc82po1e";
options.PreferredApplicationDisplayName = "Contoso URI Ap";

// Launch the URI and pass in the recommended app 
// in case the user has no apps installed to handle the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriContoso, options);

如果您有 App 的项目,您可以轻松地将其转换为库:

转到您要嵌入的应用程序。右键单击它的解决方案 - >添加新项目。

创建 Class 库(通用 Windows)。例如,将其命名为 YourAppName.Core。删除刚刚创建的模板 *.cs 文件。 Select YourAppName 项目中除 App.xaml、App.cs、Properties、References、TemporaryKey、Manifest 和 project.json 之外的所有文件夹和文件,并将它们拖放到您的新库中 YourAppName.Core。在每个 *.xaml 和 *.cs 文件中将命名空间从 YourAppName 更改为 YourAppName.Core。

转到 YourAppName 项目。排除您移动到库中的选定文件并在其中创建一个新页面,例如将其命名为 MainPage。转到引用,右键单击 -> 添加新引用并选择 YourAppName.Core。确保 App.cs 导航到 typeof MainPage。在 MainPage.xaml 中插入你的库,如下所示:

<Grid>
    <YourPageName that was previously in App.cs/>
</Grid>

运行 您的应用程序。如果它以与以前相同的方式工作 - 一切正常。

现在转到您要嵌入上述应用程序的主应用程序,只需引用您的库 YourAppName.Core。只需在您的 XAML 任何您希望的地方使用它,或从代码隐藏创建实例。

您可以将您的两个应用程序打包到 Windows 应用程序打包项目中,然后尝试从另一个触发一个,查看此处以供参考:https://docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-packaging-dot-net 我已尝试将 .Net 应用程序与 UWP 应用程序一起使用。