C# MvvmCross:在UICollectionView单击后执行命令

C# MvvmCross:在UICollectionView单击后执行命令,c#,ios,xamarin,mvvmcross,C#,Ios,Xamarin,Mvvmcross,我将MvvmCross与UICollectionViews一起使用,到目前为止,它运行得非常好。 由于MvvmCross的数据绑定非常简单,我想找到一种方法将单击UICollectionView的单元格绑定到命令(单击单元格=>导航到下一个视图)。但我还没有找到一个简单的方法 目前,这是我从数据源到集合视图的绑定: var source = new MvxCollectionViewSource(TextileCollectionView, new NSString("TextileCollec

我将MvvmCross与UICollectionViews一起使用,到目前为止,它运行得非常好。 由于MvvmCross的数据绑定非常简单,我想找到一种方法将单击UICollectionView的单元格绑定到命令(单击单元格=>导航到下一个视图)。但我还没有找到一个简单的方法

目前,这是我从数据源到集合视图的绑定:

var source = new MvxCollectionViewSource(TextileCollectionView, new NSString("TextileCollectionViewCell"));
TextileCollectionView.Source = source;

var set = this.CreateBindingSet<FirstView, FirstViewModel>();
set.Bind(source).To(vm => vm.SearchResults);
//set.Bind(TextileCollectionView.Tap()).For(tap => tap.Command).To(vm => vm.ShowDetailViewCommand);
set.Apply();
var source=new MvxCollectionViewSource(TextileCollectionView,new NSString(“TextileCollectionViewCell”);
TextileCollectionView.Source=Source;
var set=this.CreateBindingSet();
set.Bind(source.To)(vm=>vm.SearchResults);
//set.Bind(TextileCollectionView.Tap()).For(Tap=>Tap.Command).To(vm=>vm.showtailViewCommand);
set.Apply();
带有tap绑定的注释行可以工作,但是我当然不能得到单击的单元格和相应的数据

有人能帮我吗?

试试这个:

...
set.Bind(source).For("SelectedItemChanged").To(vm => vm.ShowDetailViewCommand);
set.Apply();

这是我在Xamarin.iOS上与MvxCollectionViewController一起使用的

    public sealed override void ViewDidLoad ()
    {
        if (!_isInitialised)
            return;

        base.ViewDidLoad ();

        CollectionView.RegisterNibForCell (MovieCollectionViewCell.Nib, MovieCollectionViewCell.Key);
        var source = new MoviesCollectionViewDataSource (ViewModel, CollectionView, MovieCollectionViewCell.Key);
        CollectionView.Source = source;

        this.CreateBinding(source).To<HomeViewModel>(vm => vm.MoviesSections).Apply();
        this.CreateBinding(source).For(s => s.SelectionChangedCommand).To<HomeViewModel>(vm => vm.ShowDetailViewCommand).Apply();

        CollectionView.ReloadData();
    }
public sealed override void ViewDidLoad()
{
如果(!\u已初始化)
返回;
base.ViewDidLoad();
CollectionView.Registernbforcell(MovieCollectionViewCell.Nib,MovieCollectionViewCell.Key);
var source=新的MoviesCollectionViewDataSource(ViewModel、CollectionView、MovieCollectionViewCell.Key);
CollectionView.Source=Source;
this.CreateBinding(source).To(vm=>vm.MoviesSections.Apply();
this.CreateBinding(source).For(s=>s.SelectionChangedCommand).To(vm=>vm.ShowDetailViewCommand).Apply();
CollectionView.ReloadData();
}