public PivotAdapter(Android.Support.V4.App.FragmentManager fragmentManager, Pivot pivot) : base(fragmentManager) { if (pivot == null) { throw new ArgumentNullException(nameof(pivot)); } _pivot = pivot; _fragments = new List <PivotItemFragment>(); }
private async void Pivot_PivotItemLoading(Windows.UI.Xaml.Controls.Pivot sender, Windows.UI.Xaml.Controls.PivotItemEventArgs args) { if (this.DataContext is CollectionViewModelBase parentVM) { if (args.Item.DataContext is ViewModelBase vm) { try { await parentVM.SetCurrentAsync(vm); } catch (Exception ex) { PlatformBase.CurrentCore.Logger.LogError(ex, "Error while loading child ViewModel of type {1} in CollectionViewModel type {0}", parentVM.GetType().Name, vm.GetType().Name); } if (this.AutoLoadNextPivot) { ViewModelBase nextVM = null; try { var currentIndex = sender.Items.IndexOf(args.Item); var nextIndex = currentIndex + 1; nextIndex = nextIndex < sender.Items.Count ? nextIndex : 0; var nextPi = sender.Items[nextIndex] as PivotItem; nextVM = nextPi.DataContext as ViewModelBase; // Load the next VM await parentVM.LoadViewModelAsync(nextVM); } catch (Exception ex) { PlatformBase.CurrentCore.Logger.LogError(ex, "Error while auto loading next PivotItem ViewModel of type {1} in CollectionViewModel type {0}", parentVM.GetType().Name, nextVM?.GetType().Name); } } } } }