Я покажу вам, как передать CollectionView на ViewModel .
Сначала определите 2 интерфейса, например
public interface IHasCollectionViewModel{
IHasCollectionView View {get;set;}
}
public interface IHasCollectionView{
CollectionView CollectionView {get;}
}
Далее на вашем View реализует IHasCollection
public class YourView: ContentPage, IHasCollectionView {
CollectionView CollectionView => ScrollButtons; // your CollectionView x:Name
protected override void OnBindingContextChanged()
{
if (this.BindingContext is IHasCollectionViewModel hasCollectionViewModel)
{
hasCollectionViewModel.View = this;
}
base.OnBindingContextChanged();
}
}
Далее, на вашем ViewModel реализуется IHasCollectionViewModel
public class YourViewModel: IHasCollectionViewModel {
public IHasCollectionView View { get; set; }
// use CollectionView like
private void ScrollToItem(int index){
View.CollectionView.ScrollTo(index); // don't forget check null
}
}
Надеюсь, это поможет.