2009-09-30 14 views
8

Powiedz, że mam aplikację C# Silverlight 3 z wieloma stronami. Pierwsza strona nazywa się Strona główna, a druga strona nosi nazwę Szczegóły. Jedyny sposób nawigacji do szczegółów jest programowany. Jak mam to zrobic?! Szukałem wszędzie na odpowiedź i wszystko, co znalazłem są implementacje Mapper XAML uri ....C# Silverlight 3 - Programowo nawiguj między stronami?

Pomoc mile widziana

+0

Która wersja oprogramowania Silverlight? – BigBlondeViking

+0

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

Odpowiedz

7

Czy próbował NavigationService?

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

+0

tak, po prostu mówi mi, że strona nie istnieje ....... kiedy to robi. – Goober

+0

W objaśnieniach URI Silverlight są względne względem XAP. Uri dla detailspage (jeśli jest w katalogu głównym twojego projektu) powinno być "nowe Uri ("/Details.xaml ", UriKind.Relative) –

+0

Mówię ci, że 100% to nie działa. Zupełnie nowy szablon aplikacji biznesowych Silverlight, próbując przejść do dosłownie jakiejkolwiek strony nie działa przy użyciu tej metody. – 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> 

Nawet strona "Szczegóły" powinny być odwzorowane (pomimo tego, co pan powiedział.)

7

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

XAML

+0

Działa to świetnie w ViewModel –

+0

To działa !!!!!! – 1myb

2

Spróbuj użyć tego. To działało dla mnie.

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

5

Najlepszym rozwiązaniem jest:

Dodaj ten kod do 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); 
} 

A potem, aby poruszać się pomiędzy stronami, musisz po prostu zadzwonić:

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

Szukałem wszędzie tej odpowiedzi +3, gdybym mógł – MJ33

Powiązane problemy