繁体   English   中英

如何将UISegmentedControl绑定到ViewModel命令?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM