2012-02-12 12 views
6

Chcę mieć inną stronę startową w zależności od tego, czy niektóre ustawienia są zapisane w IsolatedStorage.Jak zmienić stronę startową na aplikacji WP7?

Bu Nie wiem, gdzie jest najlepsza praktyka, aby sobie z tym poradzić. Np. Jeśli znajdę coś w odosobnionym miejscu, będę mógł pobrać MainPage, inaczej wolę jak użytkownik, by dostać stronę z ustawieniami.

Używam światła MVVM, jeśli jest coś magicznego do użycia.

Br

+0

http://stackoverflow.com/questions/3892271/how-do-i-change-the-startup-page -on-a-wp7-silverlight-app – driis

Odpowiedz

9

Można to zrobić poprzez ustawienie obojętne stronę jako głównej stronie projektu. Można zmienić stronę główną poprzez edycję pliku WMAppManifest.xml swojego projektu:

<DefaultTask Name="_default" NavigationPage="DummyPage.xaml" /> 

Teraz wykryć wszystkie nawigacje skierowane do strony manekina i przekierować do dowolnej strony chcesz.

Aby to zrobić, w pliku App.xaml.cs, na końcu konstruktora, zapisz się na razie „Poruszanie”:

this.RootFrame.Navigating += this.RootFrame_Navigating; 

W obsługi zdarzeń, wykrywać, czy nawigacja jest skierowany na stronie manekina, anulować nawigacji, i przekierowanie do strony, którą chcesz:

void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e) 
{ 
    if (e.Uri.OriginalString == "/DummyPage.xaml") 
    { 
     e.Cancel = true; 

     var navigationService = (NavigationService)sender; 

     // Insert here your logic to load the destination page from the isolated storage 
     string destinationPage = "/Page2.xaml"; 

     this.RootFrame.Dispatcher.BeginInvoke(() => navigationService.Navigate(new Uri(destinationPage, UriKind.Relative))); 
    } 
} 

Edytuj

Faktycznie, jest nawet łatwiej. na końcu konstruktora aplikacji, wystarczy ustawić UriMapper z wymianą Uri chcesz:

var mapper = new UriMapper(); 

mapper.UriMappings.Add(new UriMapping 
{ 
    Uri = new Uri("/DummyPage.xaml", UriKind.Relative), 
    MappedUri = new Uri("/Page2.xaml", UriKind.Relative) 
}); 

this.RootFrame.UriMapper = mapper; 
+0

Witam, czy dobrą praktyką jest wykonywanie operacji w izolowanym magazynie w pliku aplikacji? –

+0

Dopóki nie wykonujesz długich operacji, powinno być OK. Nie ma problemu z uzyskaniem dostępu do izolowanego miejsca w pliku aplikacji, ale powinieneś wiedzieć, że ten kod jest wykonywany przed wyświetleniem pierwszej strony aplikacji. W związku z tym masz tylko 5 sekund na wykonanie obliczeń lub Twoja aplikacja nie uzyska certyfikatu. –

+0

Greate, tnx za info o regule 5 sekund :) A twój drugi rozwiązanie działa greate –

Powiązane problemy