是否有安全的方法来分离/卸载没有副作用的行为?

时间:2014-07-08 18:44:47

标签: wpf xaml windows-runtime attachedbehaviors

在WPF和WinRT中众所周知,行为不能可靠地调用其Detach方法。避免内存泄漏的唯一方法是订阅AssociatedObject的Unloaded事件并取消挂起所有事件(example)。

到目前为止它的确有效。

但是我意识到(就像其他人对我链接的博客条目发表评论一样),以这种方式,卸载的行为永远不会再次附加。以MenuFlyout为例。如果有一个附加到MenuFlyoutItem的行为,则在关闭MenuFlyoutItem时将其卸载。如果再次打开菜单,则无法重新连接。

其他UserControl也会发生这种情况。我失去了#34;在我的WinRT应用程序中从一个页面导航到另一个页面时的行为,然后再次返回,尽管所有控件都重新创建。我不知道如何在WinRT应用程序中使用它们,其中通过导航重新创建了许多控件。

有没有已知的解决方案?

1 个答案:

答案 0 :(得分:2)

非常感谢@Justin XL,微软已经为UWP更新了Behaviors SDK并使其成为开源的。新库修复了导航分离问题! :)

http://blogs.windows.com/buildingapps/2015/11/30/xaml-behaviors-open-source-and-on-uwp/

https://twitter.com/hashtag/BehaviorsGoOpenSource?src=hash