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 绑定导航项的后退按钮