Xamarin iOS - MVVMCross:无法使用 ViewModel 中的命令连接自定义单元格中的按钮

Posted

技术标签:

【中文标题】Xamarin iOS - MVVMCross:无法使用 ViewModel 中的命令连接自定义单元格中的按钮【英文标题】:Xamarin iOS - MVVMCross : Unable to connect button in custom cell with command in ViewModel 【发布时间】:2017-05-13 06:01:39 【问题描述】:

我正在为我的 Xamarin ios 项目使用 MVVMCross。我在单元格内使用一个按钮。我想通过命令将它连接到viewModel,但由于某种原因,我无法成功绑定它们。

有人可以看看,让我知道我做错了什么或者我应该对我的代码进行哪些更新。

查看:

public partial class MyCell : MvxCollectionViewCell 

        public PostImageCell(IntPtr handle) : base(handle)
        
            this.DelayBind(() =>
            
                    var bSet = this.CreateBindingSet<MyCell, SomeViewModel>();
                    bSet.Bind(Btn).To(vm => vm.EditPhotoCommand);
                    bSet.Apply();
            );
        

视图模型:

public class SomeViewModel : BaseCoreViewModel

        public SomeViewModel()
        
         editPhotoCommand = new BaseMvxCommand(DoShow);
        

        public ICommand EditPhotoCommand  get  return editPhotoCommand;  

        private void DoShow()
         
          //
        

我保留了一些断点,并意识到当MyCell 构造函数被调用时,this.DelayBind() 内部的代码没有被命中,所以我尝试删除this.DelayBind,但仍然没有用。 每当我单击单元格内的按钮时,它都不会绑定到 ViewModel 内的命令

【问题讨论】:

您的Btn 控件是否继承自UIButton?如果不是,那是什么类型的? @Plac3Hold3r 是的,它来自 UIButton Azhar Ali 你能提供一个复制这个问题的样本吗? 你能分享你的 xib/nib 文件吗?您可以测试这是否是问题所在,如果您在 MyCell 中覆盖 AwakeFromNib 并手动将按钮添加到单元格的内容视图 public override void AwakeFromNib() base.AwakeFromNib(); ContentView.AddSubview(Btn); @Plac3Hold3r 如何在此处分享我的 xib 文件? 【参考方案1】:

可能在您的 ViewModel 中执行以下操作,然后绑定为 bSet.Bind(Btn).To(vm => vm.ClickCommand);我已经在视图上正确设置了您的按钮。我现在有一个使用 tableviewcell 上的按钮的示例。

    private MvxCommand _clickCommand;
    public ICommand ClickCommand
    
        get
        
            _clickCommand = _clickCommand ?? new MvxCommand(Hit);
            return _clickCommand;
        
    

    private void Hit()
    
        System.Diagnostics.Debug.WriteLine("Tapped Click Me");
        //System. .WriteLine ("Tapped Click Me");
    

【讨论】:

以上是关于Xamarin iOS - MVVMCross:无法使用 ViewModel 中的命令连接自定义单元格中的按钮的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin/Mvvmcross:收到 iOS 推送通知时打开不同的视图控制器

MvvmCross 4 和 Xamarin.iOS -> 使用 Storyboard 时如何从 Core 加载视图控制器?

MvvmCross 与 Xamarin.Forms 和自定义 iOS 渲染器 - 防止导航滑动 iOS - MasterDetail

Xamarin iOS:MvvMCross 绑定导航项的后退按钮

Xamarin iOS - MVVMCross:无法使用 ViewModel 中的命令连接自定义单元格中的按钮

是否有mvvmcross提供的标签式布局平台?