[英]How do I bind a UISegmentedControl to a ViewModel command?
Xamarin和mvvmcross的新手,我试图将UISegmentedControl的ValueChanged事件绑定到ViewModel中的命令。
viewModel命令如下所示:
public ICommand DonorCommand
{
get
{
return _donorCommand ?? (_donorCommand = new MvxCommand<string>(m =>
{
DonorIndividual.SetVisible(m);
DonorBusiness.SetVisible(m);
OnPropertyChanged(() => CurrentDonor);
}));
}
}
我的绑定看起来像这样:
this.CreateBinding(DonorType).For(c => c.ValueChanged).To((DonationViewModel vm) => vm.DonorCommand).Apply();
尝试编译时出现错误: Cannot convert 'lambda expression' to non-delegate type 'string' (CS1660)
因此,我试图在ViewModel中使用int类型而不是字符串(毕竟,谁在看多部分控件的文本来做什么)的新命令是:)
private ICommand _donorTypeCommand;
public ICommand DonorTypeCommand
{
get
{
return _donorCommand ?? (_donorCommand = new MvxCommand<int>(m =>
{
// break here to see what's happening
OnPropertyChanged(() => CurrentDonor);
}));
}
}
以此为绑定:
this.CreateBinding(DonorType).For(c => c.ValueChanged).To((DonationViewModel vm) => vm.DonorTypeCommand).Apply();
我犯了同样的错误。 (已验证其在每种情况下均抱怨类型为'string')不确定这意味着什么我该如何进行绑定?
这是因为它试图将您的命令类型( <string>
)推断为ValueChanged
,这不是字符串属性。
因此,您可能需要看看以下内容:
http://fetchmytip.blogspot.be/2015/02/ios-uisegmentedcontrol-custom-binding.html
诀窍是为所有UISegmentedControls
创建一个默认目标绑定,该绑定将在更改时自动绑定到UISegmentedControl.SelectedSegment
的值,在这种情况下,您的命令必须是<int>
类型,然后(如.SelectedSegment)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.