wp8 Clear ObservableCollection很慢

时间:2014-03-04 16:08:29

标签: performance mvvm windows-phone-8 observablecollection

我做什么: 我在场景之间切换。他们中的大多数都绑定到一些视图模型。这个只有一个对象与一个observableCollection有这样的绑定。当我离开时,我想要清除收藏夹,以确保它在下载时不会显示旧数据或其他内容时加载新的收藏。

我在backkeypress之后调用clear-function,因此立即删除它:

void PageBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
    App.ViewModel.JobDetail.Clear();
}

我尝试使用JobDetail[0].Remove();JobDetail.RemoveAt(0);,但效果仍然相同: 有点冻结然后在20秒后运行。如果我在使用反键离开时执行此操作,则似乎不会对反键进行反应,然后立即执行所有反键操作(主要是关闭应用程序)。如果我在加载前尝试清除,我会看到一个空白的白色屏幕,在相同的20秒后显示场景,然后开始下载(这需要几秒钟)。

我尝试加载的ViewModel包含大约15个字符串和3个短字符串列表(最多5个元素)。 对于其他ViewModel,我有50个元素,每个元素有大约10个字符串和相同的3个字符串列表,我离开时清除列表没有任何问题。

有什么想法吗?

我读到使用的VS2013会发生很多这种情况。但是,如果我打开或关闭调试,使用其他仿真器或真实设备,它没有任何区别。同样的问题。

1 个答案:

答案 0 :(得分:0)

好的,解决方案很简单:

void PageBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
    DataContext = null;
    App.ViewModel.JobDetail.Clear(); // delete previous search
}

在其他类中,我没有将DataContext设置为null,但不知怎的,它工作得很完美。在此类中删除绑定的数据会产生巨大的性能问题。就像我说大约20秒延迟,而通常一切都很好而且很快。

希望将来帮助别人:)

相关问题