2014-10-09 20 views
0

目前我有一個解決方案與多個ViewModels - 「正常」和「嵌套」的。 每次我創建一個新的ViewModel實例時,我都可以在ViewModelManager.ActiveViewModels中看到新的實例。到現在爲止還挺好。
不幸的是,我也可以在那裏看到「舊」ViewModel實例,實際上,這些實例沒有被使用,但仍然保留在這個「緩存」中。

我的第一個問題是現在,我該如何處理這個「舊」ViewModels?
還有一個問題(後續)......這是ViewModel實例化的推薦用法,以避免這種行爲?

在此先感謝ActiveViewModels在Catel

回答

0

只要視圖模型超出範圍,Catel就會自動關閉(並移除)視圖模型。我建議您使用最新的預發佈版本(v.4.0.0),因爲它非常穩定,應該可以解決3.9中的幾個問題。

1

好吧,好像我找到了它。 簡短說明:
因爲我不能使用Catel「DataWindow」,因爲我們使用DevExpress WPF(DXWindow),所以ViewModel在卸載視圖時似乎不會自動關閉。
我通過在卸載視圖時自己關閉ViewModel來解決了問題。剪下的:

private void OnUnloaded(object sender, RoutedEventArgs routedEventArgs) 
{ 
    var dc = DataContext as IViewModel; 
    if (dc != null && !dc.IsClosed) 
    dc.CloseViewModel(null); 
}