11

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

到目前为止它有效。

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

这也发生在其他用户控件上。尽管重新创建了所有控件,但在我的 WinRT 应用程序中从一个页面导航到另一个页面并再次返回时,我“丢失”了行为。我看不到如何在 WinRT 应用程序中使用它们,在该应用程序中,通过导航重新创建了许多控件。

有什么已知的解决方案吗?

4

1 回答 1

3

A big thanks to @Justin XL, Microsoft has updated the Behaviors SDK for UWP and made it open source. The new libraries fix the navigation detach problems! :)

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

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

于 2015-12-01T03:30:06.387 回答