2009-09-30 10 views
8

Dire che ho un'applicazione C# Silverlight 3 con un numero di pagine. La prima pagina è chiamata Home e la seconda pagina è denominata Dettagli. L'unico modo per navigare nei dettagli è a livello di programmazione. Come faccio a fare questo?! Cercato ovunque per la risposta e tutto quello che ho trovato sono XAML uri implementazioni mapper ....C# Silverlight 3 - Navigazione programmata tra pagine?

aiuto molto apprezzato

+0

Quale versione di Silverlight? – BigBlondeViking

+0

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

risposta

7

Hai provato il NavigationService?

this.NavigationService.Navigate (nuovo Uri ("Dettagli.xaml", UriKind.Relativo));

+0

sì, mi dice che la pagina non esiste ....... quando lo fa. – Goober

+0

I riverberi URI Silverlight sono relativi all'XAP. L'URI per la pagina dei dettagli (se è nella radice del tuo progetto) dovrebbe essere 'nuovo Uri ("/ Details.xaml", UriKind.Relative) –

+0

Ti sto dicendo che al 100% questo non funziona. Nuovo modello di applicazione aziendale Silverlight, il tentativo di navigare letteralmente in qualsiasi pagina non funziona con questo metodo. – 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> 

Anche la pagina "dettagli" dovrebbe essere mappati (nonostante quello che hai detto.)

7

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

XAML

+0

Funziona alla grande in un ViewModel –

+0

Questo funziona !!!!!! – 1myb

2

Prova usando questo. Questo ha funzionato per me.

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

5

La soluzione migliore è:

aggiungere questo codice ai tuoi 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); 
} 

E poi, per navigare tra le pagine, non vi resta che chiamare:

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

Ho cercato ovunque questa risposta +3 se potessi – MJ33

Problemi correlati