Проблемы с навигацией Silverlight - PullRequest
1 голос
/ 13 ноября 2009

Я пытаюсь перейти к страницам, передающим параметры, которые мне нужны для работы с главной страницы, но когда я пытаюсь сделать аналогичную вещь на более низком уровне, я получаю страницу не найдена (страница индекса работает, но DetailsIndex нет)

MainPage.xaml

<navigation:Frame.UriMapper>
                  <uriMapper:UriMapper x:Name="myUri">
                    <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                    <uriMapper:UriMapping Uri="DetailsIndex/{id}" MappedUri="/Views/DetailsIndex.xaml?id={id}"/>
                    <uriMapper:UriMapping Uri="Index/{id}" MappedUri="/Views/Index.xaml?id={id}"/>
                    <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
                  </uriMapper:UriMapper>

MainPage.xaml.cs (это работает)

this.ContentFrame.Source = new Uri("/index?id=19", UriKind.Relative);

IndexPage.xaml.cs (возникает ошибка -> Страница не найдена: "DetailsIndex? Id = 66")

private void Button_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;
            string id = btn.Tag.ToString();


        this.NavigationService.Navigate(new Uri(string.Format("DetailsIndex?id={0}", id), UriKind.Relative));            
    }

Ответы [ 2 ]

2 голосов
/ 13 ноября 2009

Вы должны перемещаться, используя Uri, а не отображенный Uri.

this.NavigationService.Navigate(new Uri(string.Format("DetailsIndex/{0}", id), UriKind.Relative));  

Кроме того, в Uris в отображениях, я полагаю, они обычно начинаются с ведущего /.

0 голосов
/ 03 апреля 2011

После некоторого исследования я нашел следующее решение, которое работало для меня

Xaml:

<uriMapper:UriMapper>
    <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
    <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>                                      
</uriMapper:UriMapper>

Codebehind:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
    HyperlinkButton hyp = sender as HyperlinkButton;
    string customer_id = hyp.Tag.ToString();
    this.NavigationService.Navigate(new Uri("/CustomerDetails?CustomerId=" + customer_id, UriKind.Relative));
}

Таким образом, я могу также передать строку запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...