我做什么: 我在场景之间切换。他们中的大多数都绑定到一些视图模型。这个只有一个对象与一个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会发生很多这种情况。但是,如果我打开或关闭调试,使用其他仿真器或真实设备,它没有任何区别。同样的问题。
答案 0 :(得分:0)
好的,解决方案很简单:
void PageBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
DataContext = null;
App.ViewModel.JobDetail.Clear(); // delete previous search
}
在其他类中,我没有将DataContext设置为null,但不知怎的,它工作得很完美。在此类中删除绑定的数据会产生巨大的性能问题。就像我说大约20秒延迟,而通常一切都很好而且很快。
希望将来帮助别人:)