private void ClearCacheIfNeed(IDataContext context, IViewModel viewModelTo) { if (!context.GetData(ClearNavigationCache) || CachePolicy == null) { return; } var viewModels = CachePolicy.Invalidate(context); foreach (var viewModelFrom in viewModels.Reverse()) { var navigationContext = new NavigationContext(NavigationType.Page, NavigationMode.Reset, viewModelFrom, viewModelTo, this); if (!OnViewModelClosed(viewModelFrom, navigationContext, this, true)) { CompleteOperationCallback(viewModelFrom, navigationContext); } } }