在WPF和WinRT中众所周知,行为不能可靠地调用其Detach方法。避免内存泄漏的唯一方法是订阅AssociatedObject的Unloaded事件并取消挂起所有事件(example)。
到目前为止它的确有效。
但是我意识到(就像其他人对我链接的博客条目发表评论一样),以这种方式,卸载的行为永远不会再次附加。以MenuFlyout为例。如果有一个附加到MenuFlyoutItem的行为,则在关闭MenuFlyoutItem时将其卸载。如果再次打开菜单,则无法重新连接。
其他UserControl也会发生这种情况。我失去了#34;在我的WinRT应用程序中从一个页面导航到另一个页面时的行为,然后再次返回,尽管所有控件都重新创建。我不知道如何在WinRT应用程序中使用它们,其中通过导航重新创建了许多控件。
有没有已知的解决方案?
答案 0 :(得分:2)
非常感谢@Justin XL,微软已经为UWP更新了Behaviors SDK并使其成为开源的。新库修复了导航分离问题! :)
http://blogs.windows.com/buildingapps/2015/11/30/xaml-behaviors-open-source-and-on-uwp/