2

我有多个基于 xaml 的页面存储为另一个页面上画布的子级。我在应用程序运行时添加和删除子页面。但是,从子集合中删除的页面仍在运行并响应键盘快捷键。如何强制完全删除旧页面?

4

1 回答 1

2

当您显示 XAML 页面时,您是否正在注册键盘事件?如果是这样,当您从屏幕上删除这些页面时,您是否忘记从键盘事件中注销?

由于 Silverlight 中的 UserControl 或 Page 类上没有类似“Unloading”的事件(至少我知道),我所做的是让我的页面实现一个我定义的接口,该接口包含一个单一的方法,如“Cleanup”或“关闭”。在从屏幕上删除控件之前,我调用控件上的 Cleanup() 并让它执行一些操作,例如从它可能已注册的事件中取消注册。

如果您不从事件中注销该页面的对象将永远不会被垃圾回收,因为 CLR 认为该对象仍然是活动的。

于 2008-12-01T03:04:34.597 回答