2009-09-30 8 views
8

Dites que j'ai une application C# Silverlight 3 avec un certain nombre de pages. La première page s'appelle Accueil et la deuxième page s'appelle Détails. La seule façon de naviguer vers les détails est par programme. Comment puis-je faire cela?! Cherchée partout la réponse et tout ce que j'ai trouvé sont mises en œuvre XAML uri mappeur ....C# Silverlight 3 - Navigate par programmation entre les pages?

aide grandement appréciée

+0

Quelle version de Silverlight? – BigBlondeViking

+0

Silverlight 3 ........... – Goober

Répondre

7

Avez-vous essayé le NavigationService?

this.NavigationService.Navigate (nouveau Uri ("Details.xaml", UriKind.Relative));

+0

oui, juste me dit que la page n'existe pas ....... quand c'est le cas. – Goober

+0

Dans les réverbérations URI Silverlight sont relatives à la XAP. L'Uri pour la page de détails (si c'est dans la racine de votre projet) devrait être 'new Uri ("/ Details.xaml", UriKind.Relative) –

+0

Je vous dis 100% cela ne fonctionne pas. Brand new Silverlight Business Application Template, Essayer de naviguer littéralement à n'importe quelle page ne fonctionne pas en utilisant cette méthode. – Goober

7

C#:

this.navContent.Navigate(new Uri("Welcome", UriKind.Relative)); 

XAML:

<navigation:Frame 
    x:Name="navContent" 
    HorizontalContentAlignment="Stretch" 
    VerticalContentAlignment="Stretch" 
    Source="Welcome"> 
    <navigation:Frame.UriMapper> 
     <uriMapper:UriMapper> 
      <uriMapper:UriMapping Uri="Welcome" MappedUri="/Views/Welcome.xaml" /> 
      <uriMapper:UriMapping Uri="Profile" MappedUri="/Views/Profile.xaml" /> 
      <uriMapper:UriMapping Uri="Details/{id}" MappedUri="/Views/Details.xaml?photoid={id}" /> 
     </uriMapper:UriMapper> 
    </navigation:Frame.UriMapper> 
</navigation:Frame> 

Même votre page "détails" devrait être mis en correspondance (malgré ce que vous avez dit.)

7

C# App.Current.Host. NavigationState = "/ Bienvenue";

XAML

+0

Cela fonctionne très bien dans un ViewModel –

+0

Cela fonctionne !!!!!! – 1myb

2

Essayez d'utiliser cela. Cela a fonctionné pour moi.

((System.Windows.Controls.Frame) (this.Parent)). Navigate (nouveau Uri ("/ Import", UriKind.Relative));

5

La meilleure solution est:

Ajoutez ce code à votre App.xaml.cs:

private static Grid root; 

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    root = new Grid(); 
    root.Children.Add(new MainPage()); 

    this.RootVisual = root; 
} 

public static void Navigate(UserControl newPage) 
{ 
    UserControl oldPage = root.Children[0] as UserControl; 

    root.Children.Add(newPage); 
    root.Children.Remove(oldPage); 
} 

Et puis, pour naviguer entre les pages, vous aurez juste à appeler:

App.Navigate(new OtherSamplePage()); 
+0

J'ai cherché partout cette réponse +3 si je pouvais – MJ33

Questions connexes