0

我没有找到关于我正在尝试做的事情的答案

我正在通过自定义 url(如“myurl://...”)启动我的应用程序,我想获取参数

我的应用程序通过如下所示的 url 调用:

myurl://authentication?login=foo&options=bar&returnurl=http%3A%2F%2Fwww.foobarbaz.com

当它被调用时,一个名为 AssociationUriMapper 的类会根据 url(如果它包含身份验证或其他内容)告诉应该加载哪个页面,然后加载页面。这个页面很实用,但我的问题是我需要获取 url 参数,如登录名、选项和返回 url。所以我的问题是,如何传输这些参数?或者至少,我如何传输整个 URL?(我有自己的 url 解析器来获取参数)

我想要做的是,当我对我的 AssociationUriMapper 说它应该调用哪个页面时,我希望它将 url 传输到页面的后面代码。在我的 AssociationUriMapper 类中,代码是:

if (tempUri.Contains("myurl"))
        {
            string urlCalledType;
            urlCalledType = "";
            if (tempUri.Contains("authentication"))
                urlCalledType = "authentication";
            if (tempUri.Contains("foo"))
                urlCalledType = "foo";

            switch (urlCalledType)
            {
                case "authentication":
                    return new Uri("/Views/AuthenticationView.xaml", UriKind.Relative);
                case "foo":
                    return new Uri("/Views/FooView.xaml", UriKind.Relative);
                default:
                    return new Uri("/MainPage.xaml", UriKind.Relative);

            }
        }

我知道我的代码不是很优化,但这目前并不重要,它是一个测试应用程序,而不是我将发布的最终应用程序

那么我应该添加什么以及在哪里添加,以便当我转到 AuthenticationView.xaml 时,将打开应用程序的 url 传输到 AuthenticationView.xaml.cs ?

我希望我的问题足够清楚以便理解,并感谢任何可以提供帮助的人!

4

1 回答 1

1

您可以在 AuthenticationView.xaml.cs 中执行此操作(如果这是您在应用打开时登陆的页面)。

多个参数的登录名相同。

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);   
    string parameterValue = NavigationContext.QueryString["parameter"];   
}

或这个:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);   
    string parameter = string.Empty;
    if (NavigationContext.QueryString.TryGetValue("parameter", out parameter))
    {
        //do something with the parameter
    }
}
于 2014-05-26T15:22:07.453 回答