【问题标题】:MvvmCross: Perform command after UICollectionView clickMvvmCross:UICollectionView 点击后执行命令
【发布时间】:2016-02-21 19:08:09
【问题描述】:

我正在使用带有 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绑定的注释行有效,但是我当然没有得到点击的单元格和相应的数据。

谁能帮帮我?

【问题讨论】:

    标签: c# ios xamarin mvvmcross


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 2013-03-23
        • 2017-02-26
        • 2019-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多