Передача параметров на страницу через настраиваемый URL-адрес в Windows Mobile 8?

Я не нашел ответа о том, что я пытаюсь сделать

Я запускаю свое приложение с помощью пользовательского 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?

Я надеюсь, что мой вопрос достаточно ясен, чтобы его поняли, и спасибо всем, кто может помочь!


person DevBob    schedule 26.05.2014    source источник


Ответы (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
    }
}
person meneses.pt    schedule 26.05.2014
comment
Да, я просто смотрел ссылку, в которой объяснялось, как сделать это так, как вы предложили первым. Для других людей, которые могут искать ответ на этот вопрос, параметр должен быть передан следующим образом в вашем классе AssociationURIMapper: return new Uri(/Views/FooView.xaml?parameter=bar, UriKind.Relative); - person DevBob; 26.05.2014