Gibt es eine sichere Möglichkeit, Verhaltensweisen ohne Nebenwirkungen zu lösen / zu entfernen?

9

In WPF und WinRT ist bekannt, dass Verhaltensweisen ihre Detach-Methode nicht zuverlässig aufrufen. Die einzige Möglichkeit, einen Speicherverlust zu vermeiden, besteht darin, das Ereignis Unloaded des AssociatedObject zu abonnieren und alle Ereignisse zu entfernen ( Beispiel ).

Bisher funktioniert es.

Aber ich habe festgestellt (wie auch jemand anders, der den Blog-Eintrag, den ich verlinkt habe, kommentiert), dass auf diese Weise unbeladene Verhaltensweisen niemals wieder angehängt werden. Nehmen Sie zum Beispiel ein MenuFlyout. Wenn einem MenuFlyoutItem ein Verhalten zugeordnet ist, wird es entladen, wenn MenuFlyoutItem geschlossen wird. Wenn Sie das Menü erneut öffnen, wird es nicht erneut angehängt.

Dies ist auch bei anderen Benutzersteuerelementen der Fall. Ich "verliere" Verhaltensweisen beim Navigieren in meiner WinRT App von einer Seite zur nächsten und wieder zurück, obwohl alle Controls neu erstellt werden. Ich sehe nicht, wie ich sie in einer WinRT-App verwenden kann, wo viele Controls durch Navigation neu erstellt werden.

Ist eine Lösung bekannt?

    
Amenti 08.07.2014, 18:44
quelle

1 Antwort

2

Ein großes Dankeschön an @Justin XL, Microsoft hat das Behaviors SDK für UWP aktualisiert und Open Source gemacht. Die neuen Bibliotheken beheben die Probleme mit der Navigationstrennung! :)

Ссылка

Ссылка

    
Maximus 01.12.2015, 03:30
quelle