Hallo zusammen, um zu verhindern das durch Navigieren von einer Page zur anderen in einer WPF Page Daten verlorengehen möcht ich den NavigationService nutzen. Ich habe dazu das Beispiel aud der Microsoft Dokumentation benuzt um mich beim NavigationService an und wieder abzumelden. Leider funktioniert das Abmelden nicht ( Fehlermeldung 'Object reference not set to an instance of an object' ).Hier der Code den ich verwende. Also konkret in der Prozedur CancelNavigationPage_Unloaded der Aufruf :
this.NavigationService.Navigating -= new NavigatingCancelEventHandler(NavigationService_Navigating);
löst den Fehler aus. Wenn ich aber uaf das abmelden verzichte wird bei jedem Öffnen der Page eine weitere Aneldung getätigt die dazu führt das die Abfragen zum Speichern der Änderungen mehrfach erfolgen.
Für jede Idee wäre ich dankbar. ( wenn möglich mit einem kleinen Codebeispiel)
Gruß und Danke im Vorraus asWorks
this.Loaded += new RoutedEventHandler(CancelNavigationPage_Loaded); this.Unloaded += new RoutedEventHandler(CancelNavigationPage_Unloaded);
Hallo asWorks, anscheind konnte ffordermaier dein Problem lösen. Er würde sich bestimmt freuen, wenn du seine Antwort auch als Lösung akzeptierst. Grüße
die NavigationService-Property scheint beim Unloaded Event nicht mehr gesetzt zu sein. Ursache hierfür kenne ich nicht, aber wenn Du Dir den NavigationService in einem Member zwischenspeicherst, sollte die Abmeldung funktionieren.
// member... private NavigationService ns;
// loaded event... ns = this.NavigationService; ns.Navigating += new NavigatingCancelEventHandler(NavigationService_Navigating);
// unloaded event... ns.Navigating -= new NavigatingCancelEventHandler(NavigationService_Navigating);
PS: Das += new und -= new kann man sich seit .net 2.0 sparen. Es reicht += / -= NavigationService_Navigating. Sieht auch irgendwie hübscher aus als -= new ... Gruß
Gute Ergänzung! Ich wollte nur möglichst nah am urspr. Code bleiben. Noch hübscher sind ReactiveExtensions, ist nen Blick wert, wenn Du's noch nicht kennen solltest.
soeben geschehen. Dieses Prozedere war mir nicht bekannt.
Gruß
asWorks