6

Ich habe eine sehr ähnliche Situation zu this guys question in dem ich eine Login-Seite haben, die meine MainPage.xaml Datei ist, aber ich habe eine andere Seite namens SetPassword.xaml, die ich laden möchte wenn ein Benutzer noch kein Passwort festgelegt hat. Dies ist das erste Mal, dass die App nach der Installation geladen wird.Windows Phone 8.1 überprüfen, ob Passwort gesetzt, sonst laden neue Seite

Ich habe Stunden damit verbracht, verschiedene Lösungen auszuprobieren (einschließlich der, mit der ich verlinkt habe), aber ich komme einfach nicht weiter und es scheint, dass viele der Lösungen entweder für WP7 oder WP8 sind und nichts Ähnliches für das neue WP8.1 gelöst.

Dies ist die grundlegende Überprüfung, mit Windows.Storage, die ich tun, um zu sehen, ob ein Passwort festgelegt wurde oder nicht.

Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 

if (localSettings.Values["myPassword"] == null) 
{ 
    Debug.WriteLine("Password not set"); 
    this.Frame.Navigate(typeof(SetPassword)); 
} 
else 
{ 
    Debug.WriteLine("Password is set, continuing as normal"); 
} 

Wenn ich dies zu public MainPage() Klasse hinzufügen habe ich kein Problem in der App zurückkehren „Passwort nicht gesetzt“ in den Debug-Meldungen jedoch die this.frame.Navigate(typeof(SetPassword)) Navigation nie die SetPassword Ansicht lädt.

Ich habe auch diese Methode in der OnNavigatedTo mit genau den gleichen Ergebnissen versucht.

In meiner App.xaml-Datei habe ich auch wieder eine Reihe verschiedener Methoden ausprobiert, mit denselben Ergebnissen. Ich kann die Debug-Nachricht erhalten, aber nicht die Navigation, nach der ich suche. Ich untersuchte die Implementierung einer Methode unter Application_Launchingover here sowie die Implementierung der bedingten Navigation unter RootFrame.Navigating+= RootFrameOnNavigating;over here, aber mir fehlt eindeutig etwas.

Hoffentlich können Sie schlauer Leute mir helfen, meine Navigation basierend auf einem bedingten Wert arbeiten zu lassen?

+0

Nun, der Konstruktor Ihrer Startseite ist kein Ort, um eine Navigation aufzurufen. Überprüfen Sie dies, es könnte hilfreich sein. http://blogs.msdn.com/b/ptorr/archive/2010/08/28/redirecting-an-initial-navigation.aspx Was haben Sie auch in Bezug auf 'RootFrameOnNavigating' versucht, das nicht funktioniert hat? Zeigen Sie etwas Code, geben Sie Ihrem Problem eine bessere Beschreibung. Veröffentliche nicht nur Links zu anderen Fragen. – Pantelis

+0

Ich bin ernsthaft peinlich, ich habe es herausgefunden und werde jetzt die Lösung posten. – justinhartman

Antwort

5

Die Lösung war einfach. Um die Navigation zu machen, hätte ich es entweder in App oder MainPage gemäß meiner Frage gemacht, aber der Grund, warum die Navigation nicht funktionierte, war, weil ich versuchte, zu SetPassword.xaml zu navigieren, welches ein <ContentDialog> anstelle von <Page> war.

Ich schäme mich tatsächlich, dass ich nicht einmal das überprüft habe, aber hoffentlich, wenn dies jemand anderem passiert, können sie überprüfen, dass sie tatsächlich versuchen, zu einer Page und nicht zu einem anderen Element zu navigieren. Wie traurig töricht von mir!

EDIT:

Hier ist, was mein OnLaunched in der Datei App.xaml sieht aus wie, wo kann ich jetzt meinen Scheck tun und auf eine andere Seite umleiten, basierend auf dem Wert gesetzt wird.

+0

Gerade FYI, ist diese Zeile im Code veraltet wie ist es eigentlich nie in irgendeiner Weise verwendet und entfernt werden kann: \t 'Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;' statt Wenn ich den obigen Beitrag bearbeite, dachte ich, es wäre besser, einen Kommentar hinzuzufügen. – justinhartman

+0

Diese Lösung funktioniert wie erwartet, aber ich frage mich, ob es eine sauberere MVVM-Lösung gibt.Möglicherweise eine Zwischenseite mit dem Viewmodel, die sich um die bedingte Navigation kümmert. – vivekp