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

标签 binding parameters xamarin.ios command mvvmcross

如何通过指定命令参数将命令绑定(bind)到 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); 

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

最佳答案

Android 和 iOS 按钮没有 CommandParameter属性的方式与 Windows 相同。

不过MvvmCross最近确实介绍了一种引入CommandParameter的方式通过值转换器绑定(bind) - 见 http://slodge.blogspot.co.uk/2013/06/commandparameter-binding.html

此绑定(bind)应按以下方式工作:

 bindingset
    .Bind(saveButton)
    .To(vm => vm.SaveDealerDataCommand)
    .WithConversion("CommandParameter", true);     

或者:
 bindingset
    .Bind(saveButton)
    .To(vm => vm.SaveDealerDataCommand)
    .WithConversion(new MvxCommandParameterValueConverter(), true);     

请注意,此 CommandParameter绑定(bind)并不完全在 3.0.8.1 包中,它是稳定的 nuget 版本,因此要完成这项工作,您可能需要:
  • 在您的 Setup.cs 中添加此手动值转换器注册
    protected override void FillValueConverters(IMvxValueConverterRegistry registry)
    {
        base.FillValueConverters(registry);
        registry.AddOrOverwrite(
            "CommandParameter", 
            new Cirrious.MvvmCross.Binding.MvxCommandParameterValueConverter()
        );
    }
    
  • 使用自 3.0.8.1 以来上传的 beta nuget 包之一(将 nuget 设置为包含预发布版本以查看这些包)。
  • 自己构建源代码
  • 关于binding - MvvMCross 带参数的绑定(bind)命令(在 C# 代码中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17492742/

    相关文章:

    xamarin.ios - 代码适用于 Android 和 iOS - 为什么我不能将它移动到 PCL 中?

    c# - 如何在 xamarin.forms 中读取图像源或图像名称?

    C# 绑定(bind)对象到字符串

    WPF 不允许我在绑定(bind)路径上放置绑定(bind)——还有其他方法吗?

    C++ - 数组指针作为函数参数,填充数组并从 UI 线程访问它

    c# - 强制转换 C# 参数?

    ios - Xamarin ios - 来自 UIImagePickerController 的 referenceUrl 始终为 null

    wpf - 对作为 FrameworkElement 的值使用数据绑定(bind)

    c# - Silverlight {Binding} 不会访问类成员

    sql - 使用sql server参数化输入?