void BeforeItemAdded(IPanePageViewModel page) { if (!history.Contains(page)) { page.CloseRequested.Subscribe(_ => RemoveAll(page)); } }
void BeforeItemAdded(IPanePageViewModel page) { if (page.CloseRequested != null && !history.Contains(page)) { RegisterDispose( page, page.CloseRequested.Subscribe(_ => RemoveAll(page))); } }
public int RemoveAll(IPanePageViewModel page) { var count = 0; while (history.Remove(page)) { ++count; } return(count); }
/// <inheritdoc/> public void NavigateTo(IPanePageViewModel page) { Guard.ArgumentNotNull(page, nameof(page)); history.Insert(index + 1, page); ++Index; if (index < history.Count - 1) { history.RemoveRange(index + 1, history.Count - (index + 1)); } }
void ItemRemoved(int removedIndex, IPanePageViewModel page) { if (removedIndex <= Index) { --Index; } if (!history.Contains(page)) { if (Content == page) { page.Deactivated(); } page.Dispose(); } }
public void RegisterDispose(IPanePageViewModel page, IDisposable dispose) { if (pageDispose == null) { pageDispose = new Dictionary <IPanePageViewModel, CompositeDisposable>(); } CompositeDisposable item; if (!pageDispose.TryGetValue(page, out item)) { item = new CompositeDisposable(); pageDispose.Add(page, item); } item.Add(dispose); }
void ItemRemoved(int removedIndex, IPanePageViewModel page) { if (removedIndex <= Index) { --Index; } if (!history.Contains(page)) { CompositeDisposable dispose = null; if (pageDispose?.TryGetValue(page, out dispose) == true) { dispose.Dispose(); pageDispose.Remove(page); } } }