Abhängigkeitseigenschaft geänderter Rückruf - mehrfaches Abfeuern

8

Ich möchte Änderungen der DependencyProperty zuhören. Dieser Code funktioniert, aber nach jeder Neulade-Seite mit dem CustomControl wird die Callback-Methode mehrmals aufgerufen ...

%Vor%

Aktualisieren

ViewModel

%Vor%

Anzeigen

%Vor%

Beispiel

  • Projekt

    1. tippen Sie auf "zweite Seite"
    2. tippen Sie auf "true" (sehen Sie sich das Ausgabefenster an)
    3. gehe zurück
    4. tippen Sie auf "zweite Seite"
    5. tippen Sie auf "false" (sehen Sie sich das Ausgabefenster an)
Jakub Krampl 02.10.2013, 06:31
quelle

3 Antworten

3

Das hat mein Problem gelöst.

%Vor%     
Jakub Krampl 10.10.2013, 20:40
quelle
1

Es klingt so, als ob die Häufigkeit, mit der das Ereignis ausgelöst wird, sich darauf bezieht, wie oft Sie die Seite mit dem Steuerelement öffnen. Dies würde bedeuten, dass Sie mehrere Instanzen der Seite haben.

Das Problem ist dann wirklich, dass Ihre Seiten etwas tun, das sie daran hindert, richtig zerstört zu werden.
Leider, ohne den Code sehen zu können, ist es unmöglich zu sagen, was das verursacht. Es ist wahrscheinlich, dass Sie ein Ereignis im Code abonniert haben und es nicht abgemeldet haben. (Ich sehe das oft in Phone-Apps.)

    
Matt Lacey 02.10.2013 08:36
quelle
0

Was passiert, ist, dass SecondPageView mehrmals geladen wird. Jedes Mal, wenn eine neue Instanz erstellt wird, bindet sie sich an den Datenkontext und ruft den Wert von IsOpen aus dem Ansichtsmodell ab. Dann wird die Abhängigkeitseigenschaft festgelegt.

Das ist eigentlich das gewünschte Verhalten. Wenn die Eigenschaften nicht erneut festgelegt wurden, wird der Status des Ansichtsmodells nicht auf der Seite angezeigt. Es ist nicht möglich, über die native Navigations-API des Telefons zu einer alten Seiteninstanz zu navigieren.

    
Eli Arbel 02.10.2013 08:57
quelle

Tags und Links