gpt4 book ai didi

ios - 如何将 UISegmentedControl 绑定(bind)到 ViewModel 命令?

转载 作者:行者123 更新时间:2023-11-29 12:16:27 25 4
gpt4 key购买 nike

Xamarin 和 mvvmcross 的新手,我正在尝试将 UISegmentedControl 的 ValueChanged 事件绑定(bind)到 ViewModel 中的命令。

viewModel 命令如下所示:

    public ICommand DonorCommand
{
get
{
return _donorCommand ?? (_donorCommand = new MvxCommand<string>(m =>
{
DonorIndividual.SetVisible(m);
DonorBusiness.SetVisible(m);
OnPropertyChanged(() => CurrentDonor);
}));

}
}

我的绑定(bind)看起来像这样:

        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);
}));

}
}

以此为绑定(bind):

        this.CreateBinding(DonorType).For(c => c.ValueChanged).To((DonationViewModel vm) => vm.DonorTypeCommand).Apply();

我得到了同样的错误。 (已验证它在每种情况下都提示“字符串”类型)不确定那是什么意思我该如何进行绑定(bind)?

最佳答案

这是因为它试图将您的命令类型 ( <string> ) 推断为 ValueChanged , 这不是字符串属性。

所以,你可能想看看这个:

http://fetchmytip.blogspot.be/2015/02/ios-uisegmentedcontrol-custom-binding.html

诀窍是为所有 UISegmentedControls 创建一个默认目标绑定(bind)这将自动绑定(bind)到 UISegmentedControl.SelectedSegment 的值当它发生变化时,在您的情况下,您的命令必须是 <int> 类型然后(比如.SelectedSegment)

关于ios - 如何将 UISegmentedControl 绑定(bind)到 ViewModel 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31878112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com