현재 "정상적인"및 "중첩 된"ViewModels가있는 솔루션이 있습니다. 새 ViewModel 인스턴스를 만들 때마다 ViewModelManager.ActiveViewModels에서 새 인스턴스를 볼 수 있습니다. 여태까지는 그런대로 잘됐다.
아쉽게도 "오래된"ViewModel 인스턴스가 실제로는 사용되지만 아직이 "캐시"에 남아있는 인스턴스를 볼 수 있습니다.
내 첫 번째 질문은 지금,이 "오래된"ViewModels을 처리하기 위해 무엇을해야합니까?
추가 질문 (후속) ... :이 동작을 피하기 위해 ViewModel 인스턴스화를 사용하는 것이 좋습니다?
미리 감사드립니다.Catel의 ActiveViewModels
0
A
답변
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);
}