【发布时间】:2017-05-22 03:48:04
【问题描述】:
我刚刚在我正在开发的一个简单的 Windows 应用商店应用中发现了一个巨大的内存泄漏。
原来我在 ListView 的ItemTemplate 中放置了一个 UserControl,并挂钩了 UserControl 的Unloaded 事件以分离一些事件处理程序。
我预计当 ListView 的项目被清除时,UserControl 的Unloaded 事件会触发,但它不会!但是当我删除一项一项时,UserControl 的Unloaded 事件将按预期触发。
有人可以给我一些建议吗?或者除了挂钩Unloaded 事件之外,我应该把清理代码放在哪里。任何想法将不胜感激!谢谢!下面是代码sn-p:
为了简化,ListView的ItemTemplate是:
<DataTemplate>
<local:MyUserControl1 />
</DataTemplate>
而 MyUserControl1 只是一个空的 UserControl:
public sealed partial class MyUserControl1 : UserControl
{
public MyUserControl1()
{
this.InitializeComponent();
this.Unloaded += MyUserControl1_Unloaded;
}
private void MyUserControl1_Unloaded(object sender, RoutedEventArgs e)
{
Debug.WriteLine("MyUserControl1_Unloaded...");
}
}
【问题讨论】:
标签: c# xaml windows-store-apps uwp