我該怎麼做: 我在場景之間切換。他們中的大多數都綁定了一些視圖模型。這個只有1個對象就具有綁定到observableCollection的功能。當我離開時,我想清除收藏夾以確保它在下載時不會顯示舊數據或其他內容,而是加載新收藏夾。wp8清除ObservableCollection很慢
我打電話backkeypress後明確的功能,所以它的immediatelly刪除:
void PageBackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
App.ViewModel.JobDetail.Clear();
}
我JobDetail[0].Remove();
和JobDetail.RemoveAt(0);
但還是同樣的效果試了一下: 它還挺凍結,然後20秒的東西后運行。如果我用backkey離開它,它似乎不會對backkey做出反應,然後立即執行我所有的backkey命中(大部分關閉應用程序)。如果我在加載之前嘗試清除,我會看到一個空白的白色屏幕,並在相同的20秒後顯示場景,然後開始下載(這需要幾秒鐘的時間)。
我嘗試加載的ViewModel包含大約15個字符串和3個短字符串列表(最多5個元素)。 與其他ViewModels我有50個元素,每個有大約10個字符串和相同的3個字符串列表,我離開時沒有任何問題來清除列表。
任何想法?
我讀過這發生了很多與我使用的VS2013。但是,如果我打開或關閉調試,使用其他模擬器或實際設備,它沒有任何區別。同樣的問題。
是否有一個原因,你沒有爲每個頁面使用單獨的視圖模型實例? –
RowlandShaw指出,你真的不應該爲所有頁面使用靜態ViewModel,但它需要大量的重構。嘗試'App.ViewModel.JobDetail = new ObservableCollection <..>()',這可能有幫助。 – lisp
這就是我這樣做的方式。但是我每次訪問它時都想重新加載這個頁面。這就是爲什麼我在進入或離開時試圖刪除視圖模型的原因。 隨着其他頁面的嘗試,每當內容發生變化時我都會做同樣的事情:我在按下backkey後刪除並在下一次再次輸入時加載。作品完美無瑕。這裏需要20秒,而這只是一個元素。這可能是原因嗎?因爲我刪除了元素[0],它釋放了整個viewmodel的內存或其他內容? – ecth