如何通过指定命令参数将命令绑定(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 版本,因此要完成这项工作,您可能需要:protected override void FillValueConverters(IMvxValueConverterRegistry registry)
{
base.FillValueConverters(registry);
registry.AddOrOverwrite(
"CommandParameter",
new Cirrious.MvvmCross.Binding.MvxCommandParameterValueConverter()
);
}
关于binding - MvvMCross 带参数的绑定(bind)命令(在 C# 代码中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17492742/