private void MoveTo(int nextValue) { var currentIndex = ItemSource.ToList().IndexOf(WorkingItem); var newIndex = currentIndex + nextValue; if (newIndex < 0 || newIndex >= ItemSource.Count()) { return; } WorkingItem = ItemSource.ElementAt(newIndex); OnPropertyChanged(nameof(WorkingItem)); }
protected override UIViewController GetViewControllerAtIndex(int index) { if (index < 0 || index >= ItemSource.Count()) { return(null); } // Here, you can choose to use the built-in CreateViewController() // or instanciate your own view controllers var parameters = new { index = index, title = ItemSource.ElementAt(index) as string }; // If your controller is a IMvxPageViewController, you can also pass the index, and then PageIndex will be set automatically // For VM with CreateViewController() the controller will be constructed late, there is no way to set it directly excepted passing it as Init() parameter // For instance: // var vm = Mvx.IocConstruct<OnePageViewModel>(); // vm.Init(index, ItemSource.ElementAt(index) as string); // var viewController = (PageView as IMvxIosView).CreateViewControllerFor(vm) as UIViewController; var viewController = this.CreateViewController <OnePageViewModel>(parameters); return(viewController); }
protected override UIViewController GetViewControllerAtIndex(int index) { if (ItemSource == null || ItemSource.Count() == 0) { return(null); } UIViewController viewController; if (!_cachedVC.TryGetValue(index, out viewController)) { var viewModel = ItemSource.ElementAt(index) as IMvxViewModel; viewModel.Initialize(); viewController = (PageView as IMvxIosView)?.CreateViewControllerFor(viewModel) as UIViewController; _cachedVC[index] = viewController; } return(viewController); }