public async Task NavigateAsync(DavItem item) { if (item == null) { return; } if (BackStack.FirstOrDefault(x => x.EntityId == item.EntityId) != null) { var backStackItem = BackStack.FirstOrDefault(x => x.EntityId == item.EntityId); int index = BackStack.IndexOf(backStackItem); var list = BackStack.ToList(); list.RemoveRange(index + 1, BackStack.Count - index - 1); BackStack = list.ToObservableCollection(); ForwardStack.Clear(); CurrentItem = backStackItem; } else { BackStack.Add(item); ForwardStack.Remove(item); CurrentItem = item; } await ReloadAsync(); }