带参数的MvvMCross bind命令(在C#代码中)

Sve*_*übe 5 parameters binding command xamarin.ios mvvmcross

如何通过指定命令参数将命令绑定到MvvMCross(Xamarin.iOS)中的代码中的按钮?

// command definition
public MvxCommand SaveDealerDataCommand
{
    get { return new MvxCommand<bool>(DoSaveDealerDataAction); }
}

public void DoSaveDealerDataAction(bool show)
{
    //...
}

// binding
bindingset.Bind(saveButton).To(vm => vm.SaveDealerDataCommand); 
Run Code Online (Sandbox Code Playgroud)

我在哪里可以指定将传递给命令的参数(true/false)?

Stu*_*art 9

Android和iOS按钮的CommandParameter属性与Windows的属性不同.

但是,MvvmCross最近推出了一种CommandParameter通过Value Converters 引入绑定的方法- 请参阅http://slodge.blogspot.co.uk/2013/06/commandparameter-binding.html

此绑定应该如下:

 bindingset
    .Bind(saveButton)
    .To(vm => vm.SaveDealerDataCommand)
    .WithConversion("CommandParameter", true);     
Run Code Online (Sandbox Code Playgroud)

要么:

 bindingset
    .Bind(saveButton)
    .To(vm => vm.SaveDealerDataCommand)
    .WithConversion(new MvxCommandParameterValueConverter(), true);     
Run Code Online (Sandbox Code Playgroud)

请注意,此CommandParameter绑定不完全在3.0.8.1包中,这是稳定的nuget版本,因此为了完成这项工作,您可能需要:

  1. 在Setup.cs中添加此手动值转换器注册

    protected override void FillValueConverters(IMvxValueConverterRegistry registry)
    {
        base.FillValueConverters(registry);
        registry.AddOrOverwrite(
            "CommandParameter", 
            new Cirrious.MvvmCross.Binding.MvxCommandParameterValueConverter()
        );
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 或者使用自3.0.8.1以来上传的beta nuget软件包之一(设置nuget以包含预发布以查看这些软件包).

  3. 或者自己构建源代码

  • 这个答案有新的更新吗?我想在iOS中为我的UIButton设置一个动态命令参数.例如,当您单击该按钮时,它将使用我的一个UITextField控件中的当前Text调用我的命令...并且所有这些都与.Bind连接. (2认同)