我有一个WPF应用程序,我正在使用桌面桥制作一个UWP应用程序。基本上,我创建了一个新的Windows应用程序打包项目,并添加了我的WPF项目作为参考。我在app manifest中添加了一个带有自定义URI的Protocol声明,但是我不能实现/覆盖OnActivated()
方法,因为我没有类来做这件事,甚至不可能向这种类型的项目添加类。那么,有什么想法可以在这个环境中处理我的自定义URI调用吗?
我已经创建了另一个UWP项目,它只是处理这些请求,我还将这个项目作为引用添加到主打包项目中。基本上它是工作的,但是如果我创建应用程序包并安装它(appxbundle),那么URI处理程序根本不会被调用。
2条答案
按热度按时间snz8szmq1#
有两种方法可以做到这一点:
1)协议激活参数将传递给应用的main()函数。但是,由于您正在使用WPF,因此您需要首先了解如何访问main()函数。本答复对此作了解释:
No Main() in WPF?
2)当前的Windows SDK(1809及更高版本)提供了一种更好的方法:您可以调用此新方法来获取打包的WPF应用程序(或任何打包的Win32应用程序)的激活参数:
https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.appinstance.getactivatedeventargs#Windows_ApplicationModel_AppInstance_GetActivatedEventArgs
bxjv4tth2#
我来到这里寻找如何处理.NET7 WPF项目的URI激活。这里接受的答案是我找到的最好的建议,但不适用于我的用例。
我不得不这么做
安装协议
启动协议/ Uri激活
似乎没有一种方法可以使用已安装的协议来定位调试应用程序(至少像UWP那样优雅)。在没有找到任何文档之后,我发现(通过实验)通过协议启动应用程序会将参数中的URI传递给
App.OnStartup
。要调试协议启动,您需要将命令行参数添加到启动配置文件中。这是通过解决方案资源管理器中
Debug | General
下的启动项目的属性完成的(见图)。现在,您可以在Visual Studio中点击
F5
并调试URI激活。