public void Add(IEntryViewModel item) { _updatingNavigationHistory = true; try { //GC.Collect(0, GCCollectionMode.Forced, true); if (NavigationPosition != -1) { for (int i = 0; i < NavigationPosition; i++) { NavigationHistory.RemoveAt(0); } } while (NavigationHistory.Count > 10) { NavigationHistory.RemoveAt(NavigationHistory.Count - 1); } if (NavigationHistory.IndexOf(item) != -1) { NavigationHistory.Remove(item); } NavigationHistory.Insert(0, item); NavigationPosition = 0; UpdateState(); } finally { _updatingNavigationHistory = false; } }
private void AddNavigationHistory(ViewerBaseVM item) { if (NavigationPosition != -1) { for (int i = 0; i < NavigationPosition; i++) { NavigationHistory.RemoveAt(0); } } while (NavigationHistory.Count > 10) { NavigationHistory.RemoveAt(NavigationHistory.Count - 1); } if (NavigationHistory.IndexOf(item) != -1) { NavigationHistory.Remove(item); } NavigationHistory.Insert(0, item); NavigationPosition = 0; //if (jpList != null) //{ // jpList.AddToRecent(item.EmbeddedDirectoryModel.EmbeddedDirectoryEntry.ParseName); // jpList.Refresh(); //} }
async void _frame_Navigated(object sender, NavigationEventArgs e) { try { if (e.NavigationMode == NavigationMode.Back) { var lastEntry = _history.AliveEntries.LastOrDefault(); if (lastEntry != null) { await _history.Remove(CancellationToken.None, lastEntry); } lastEntry = _history.AliveEntries.LastOrDefault(); var page = e.Content as FrameworkElement; if (lastEntry != null && page != null) { await _dispatcherScheduler.Run(() => page.DataContext = lastEntry.ViewModel); } } } catch (Exception) { } }