2014-10-09 1 views
0

В настоящее время у меня есть решение с несколькими ViewModels - «нормальными» и «вложенными». Каждый раз, когда я создаю новый экземпляр ViewModel, я могу увидеть новый экземпляр в ViewModelManager.ActiveViewModels. Все идет нормально.
К сожалению, я также вижу «старые» экземпляры ViewModel, на самом деле, экземпляры, которые не используются, но все еще остаются в этом «кэше».

Мой первый вопрос сейчас, что мне нужно сделать для утилизации этих «старых» ViewModels?
И дополнительный вопрос (продолжение) ...: что рекомендуется использовать экземпляр ViewModel, чтобы избежать такого поведения?

Заранее спасибоActiveViewModels in Catel

ответ

0

Catel автоматически закроет (и удалит) режимы просмотра, как только модели с обзором действительно будут недоступны. Я рекомендую использовать последнюю предварительную заявку (v.4.0.0), потому что она очень стабильна и должна решить несколько проблем в настоящее время в 3.9.

1

Хорошо, похоже, я нашел его. Краткое описание:
Поскольку я не могу использовать Catel DataWindow, потому что мы используем DevExpress WPF (DXWindow), ViewModel, кажется, не закрывается автоматически при выгрузке View.
Я исправил проблему, закрыв ViewModel самостоятельно, когда View выгружен. Snipped:

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