我已按照找到的in the documentation说明进行操作;但是,当我使用指定的协议my-protocol://
启动我的应用程序(键入到Web浏览器中)时,应用程序将启动,但它只会停留在启动画面上,就像导航无法执行任何操作一样:
代码示例:
// MyApp.UWP/App.xaml.cs
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
ProtocolActivatedEventArgs eventArgs =
args as ProtocolActivatedEventArgs;
// TODO: Decide where to navigate, but for now just go to main page
Frame rootFrame = Window.Current.Content as Frame;
rootFrame.Navigate(typeof(MainPage), args);
}
}
有什么明显的事我做错了吗?也许有更好的方法来处理导航?或者也许有些东西我忽略了?
修改
这很难排除故障,因为我不能在visual studio中运行调试。为了测试它,我实际上必须从my-protocol://
启动它,它没有连接到调试器。
有没有办法在从url / protocol启动时调试它?
答案 0 :(得分:2)
我可以重现您的问题。 @kennyzx的建议是正确的。在导航之前,您首先需要进行判断。
请参考以下代码示例以供参考。
protected override void OnActivated(IActivatedEventArgs args)
{
base.OnActivated(args);
if (args.Kind == ActivationKind.Protocol)
{
ProtocolActivatedEventArgs eventArgs =
args as ProtocolActivatedEventArgs;
// TODO: Decide where to navigate, but for now just go to main page
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
}
Window.Current.Content = rootFrame;
rootFrame.Navigate(typeof(MainPage), args);
Window.Current.Activate();
}
}