MvvmCross:在 UICollectionView 单击后执行命令

本文关键字:执行 命令 单击 UICollectionView MvvmCross | 更新日期: 2023-09-27 18:30:29

我正在使用带有UICollectionViews的MvvmCross,到目前为止它工作得很好。由于使用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();

带有tap绑定的注释行有效,但是当然我没有得到单击的单元格和相应的数据。

谁能帮我?

MvvmCross:在 UICollectionView 单击后执行命令

这是我

在 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();
    }

试试这个:

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