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

Ame*_*nti 10 wpf xaml attachedbehaviors windows-runtime

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

到目前为止它的作用.

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

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

有没有已知的解决方案?

Max*_*mus 4

非常感谢 @Justin XL,Microsoft 更新了 UWP 的行为 SDK 并将其开源。新的库解决了导航分离问题!:)

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

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