protected override void InitBindings() { Bindings.Add( this.SetBinding(() => ViewModel.LoadingTopic, () => ForumTopicPageLoadingSpinner.Visibility).ConvertSourceToTarget(Converters.BoolToVisibility)); Bindings.Add(this.SetBinding(() => ViewModel.Messages).WhenSourceChanges(() => { if (ViewModel.Messages != null) { _items = ViewModel.Messages.Select(model => new ForumTopicItem(Activity)).ToList(); ForumTopicPagePostsList.InjectFlingAdapter(ViewModel.Messages, DataTemplateFull, DataTemplateFling, ContainerTemplate, DataTemplateBasic); } })); Bindings.Add( this.SetBinding(() => ViewModel.ToggleWatchingButtonText, () => ForumTopicPageToggleWatchingButton.Text)); ForumTopicPageGotoPageButton.SetOnClickListener(new OnClickListener(v => ForumTopicPageGotoPageButtonOnClick())); ForumTopicPageActionButton.SetOnClickListener(new OnClickListener(v => ForumTopicPageActionButtonOnClick())); ForumTopicPageToggleWatchingButton.SetOnClickListener(new OnClickListener(v => ViewModel.ToggleWatchingCommand.Execute(null))); Bindings.Add(this.SetBinding(() => ViewModel.AvailablePages).WhenSourceChanges(() => { ViewModel.AvailablePages.CollectionChanged += (sender, args) => UpdatePageSelection(); UpdatePageSelection(); })); }
private async void ViewModelOnRequestScroll(object sender, int i) { try { if (RootView != null && i < ForumTopicPagePostsList?.Adapter.Count) { ForumTopicPagePostsList?.SetSelection(i); } else { await Task.Delay(100); ViewModelOnRequestScroll(sender, i); } } catch (Exception) { //such scrolling is prone to error } }