attachedbehaviors

___ answer34012090 ___

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! :)

Ссылка

Ссылка

    
___ tag123wpf ___ Windows Presentation Foundation oder WPF ist ein Subsystem zum Rendern von Benutzeroberflächen in Windows-basierten Anwendungen. ___ tag123windowsruntime ___ Windows Runtime (WinRT) ist eine Microsoft-Plattformarchitektur, mit der Anwendungen in einer Sandbox-Umgebung ausgeführt werden können, in der eine UI / UX von Windows Modern Style verfügbar ist. Nicht zu verwechseln mit Windows RT, der Edition von Windows 8 für ARM-Geräte; siehe Windows-RT. ___ tag123xaml ___ Die Extensible Application Markup Language (XAML) ist eine deklarative XML-basierte Sprache, die zum Initialisieren strukturierter Werte und Objekte in verschiedenen Frameworks verwendet wird. Wenn eine Frage über die Verwendung von XAML mit einem bestimmten Framework ist, sollte auch ein Tag für das Framework bereitgestellt werden, z. [wpf] (Windows Presentation Foundation), [Silverlight], [Windows-Phone], [Windows-Store-Apps] (Windows 8 Store-Apps), [win-universal-app], [xamarin.forms] oder [workflow- Stiftung] ___ qstnhdr ___ Gibt es eine sichere Möglichkeit, Verhaltensweisen ohne Nebenwirkungen zu lösen / zu entfernen? ___ tag123attachedbehaviors__ Hilf uns dabei, dieses Wiki zu bearbeiten ___ qstntxt ___

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?

    
___
1
Antwort

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

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 Ere...
08.07.2014, 18:44