2
我有多個基於xaml的頁面存儲爲另一頁上的畫布的子項。我在應用程序運行時添加並移除子頁面。但是,從子集合中刪除的頁面仍在運行並響應鍵盤快捷鍵。我如何強制刪除舊頁面?可以手動從收集中刪除Silverlight 2.0頁面(垃圾收集)嗎?
我有多個基於xaml的頁面存儲爲另一頁上的畫布的子項。我在應用程序運行時添加並移除子頁面。但是,從子集合中刪除的頁面仍在運行並響應鍵盤快捷鍵。我如何強制刪除舊頁面?可以手動從收集中刪除Silverlight 2.0頁面(垃圾收集)嗎?
當您顯示XAML頁面時,是否註冊了鍵盤事件? 如果是這樣,當您從屏幕上刪除這些頁面時,是否忘記從鍵盤事件中註銷?
由於Silverlight中的UserControl或Page類(至少我知道)沒有「卸載」類事件,我做的是讓我的頁面實現一個接口,我定義的接口包含一個像「清理」或「關閉」。在我從屏幕上刪除控件之前,我調用控件上的Cleanup(),並讓它執行諸如註銷它可能已註冊的事件的註冊。
如果您沒有從事件中取消註冊,則該頁面的對象將永遠不會被垃圾回收,因爲CLR認爲該對象仍然存在。
優秀。有兩個事件沒有正確清理。現在看起來工作得很好。 – BenMaddox 2008-12-01 03:44:40