[英]MvvmCross - navigate to ViewModel with parameters Xamarin.iOS
[英]Xamarin.IOS : MVVMCross Passing parameter from view to ViewModel
我正在为xamarin ios项目使用MVVMCross。 从我的自定义单元格视图,我想将参数传递到其视图模型。 MVVMCross是否可以使用?
我尝试使用CommandParameter属性,但是没有用。 是否可以将参数从视图传递到视图模型,如果可以,则可以提供摘要吗?
谢谢
更新资料
我的单元格具有按钮,并且在按钮上单击时,我想知道被单击以执行操作的按钮的单元格索引。 我正在使用以下代码来做到这一点。
this.DelayBind(() =>
{
var bSet = this.CreateBindingSet<MyeCell, SomeViewModel>();
bSet.Bind(cellIndex).To(vm => vm.index);
bSet.Bind(UserPostBtn).To(vm => vm.EditPhotoCommand);
bSet.Apply();
});
我尝试使用delaybind连接视图和视图模型,但是在clickm按钮上出现以下错误:
提供给CFRunLoopRunSpecific的无效模式'kCFRunLoopCommonModes'-在_CFRunLoopError_RunCalledWithInvalidMode上中断以进行调试。 每次执行该消息只会出现一次。
您应该能够使用MvxCommandParameterValueConverter
通过命令将参数传递给ViewModel
。
字符串名称的方法:
bSet
.Bind(UserPostBtn)
.To(vm => vm.EditPhotoCommand)
.WithConversion("CommandParameter", cellIndex);
键入名称的方法:
bSet
.Bind(UserPostBtn)
.To(vm => vm.EditPhotoCommand)
.WithConversion(new MvxCommandParameterValueConverter(), cellIndex);
扩展方法:
bSet
.Bind(MainButton)
.To(vm => vm.EditPhotoCommand)
.CommandParameter(cellIndex);
然后在您的ViewModel中接收传递的参数。
IMvxCommand _editPhotoCommand;
public IMvxCommand EditPhotoCommand =>
_editPhotoCommand ?? (_editPhotoCommand = new MvxCommand<int>(EditPhotoExecution));
private void EditPhotoExecution(int index)
{
// do stuff
}
更新:
MvvmCross还提供了一个扩展方法CommandParameter
,该方法允许您仅传递命令参数,它将处理MvxCommandParameterValueConverter
的创建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.