2009-11-12 5 views
1

J'essaie de naviguer vers des pages en passant des paramètres, que je dois travailler à partir de la page principale, mais quand j'essaie de faire une chose similaire à un niveau inférieur, je reçois une page introuvable fonctionne, mais le DetailsIndex ne fonctionne pas)Problèmes de navigation Silverlight

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 (cela fonctionne)

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

IndexPage.xaml.cs (cela devient une erreur -> Page non trouvée: "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));    
    } 

Répondre

2

Vous devriez naviguerez en utilisant l'Uri, pas Uri cartographié.

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

Aussi, dans l'Uris dans les cartographies, je crois qu'ils commencent généralement par un /.

+0

merci ... Cela fonctionne avec le "/", j'ai eu un comportement très étrange où il a navigué à la page, et l'erreur arrivait quand j'utilisais le contexte de navigation ... qui me lançait. Je discute aussi en utilisant un motif singleton au lieu de passer des paramètres de cette façon ... il semble un peu maladroit –

0

Après avoir fait quelques recherches, j'ai trouvé la solution ci-dessous qui a fonctionné pour moi

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)); 
} 

De cette façon, je suis en mesure de transmettre la chaîne de requête aussi

+1

Je suis un peu surpris ... En utilisant ce motif, vous demandez/Views/CustomersDetails? CustomId = 1.xaml, qui n'existe sûrement pas. Peut-être que je me trompe ici, mais j'ai eu ce problème précis. – jv42

Questions connexes