2014-10-09 3 views
0

현재 "정상적인"및 "중첩 된"ViewModels가있는 솔루션이 있습니다. 새 ViewModel 인스턴스를 만들 때마다 ViewModelManager.ActiveViewModels에서 새 인스턴스를 볼 수 있습니다. 여태까지는 그런대로 잘됐다.
아쉽게도 "오래된"ViewModel 인스턴스가 실제로는 사용되지만 아직이 "캐시"에 남아있는 인스턴스를 볼 수 있습니다.

내 첫 번째 질문은 지금,이 "오래된"ViewModels을 처리하기 위해 무엇을해야합니까?
추가 질문 (후속) ... :이 동작을 피하기 위해 ViewModel 인스턴스화를 사용하는 것이 좋습니다?

미리 감사드립니다.Catel의 ActiveViewModels

답변

0

Catel은보기 모델이 실제로 범위를 벗어나는 즉시보기 모델을 자동으로 닫고 제거합니다. 최신 시험판 (v.4.0.0)은 매우 안정적이며 현재 3.9의 몇 가지 문제를 해결해야하므로 사용하는 것이 좋습니다.

1

좋아, 찾은 것 같습니다. 간단한 설명 :
DevExpress WPF (DXWindow)를 사용하기 때문에 Catel "DataWindow"를 사용할 수 없으므로 ViewModel이 뷰를 언로드 할 때 자동으로 닫히지 않는 것처럼 보입니다.
보기를 언로드 할 때 ViewModel을 직접 닫아서 문제를 해결했습니다. Snipped :

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