Xamarin.ios 如何使用mvvmcross对UITextView控件进行双向绑定?

Xamarin.ios 如何使用mvvmcross对UITextView控件进行双向绑定?,xamarin.ios,mvvmcross,Xamarin.ios,Mvvmcross,我有一个使用XCode创建的简单视图(它是一个XIB)。它由两个UITextView控件和一个UIButton组成。我已将UITextView控件公开为插座,并为它们命名。在my View.designer.cs文件中,一切看起来都很好 我正在使用以下语法创建绑定: this.AddBindings( new Dictionary<object, string>() { {lastname

我有一个使用XCode创建的简单视图(它是一个XIB)。它由两个UITextView控件和一个UIButton组成。我已将UITextView控件公开为插座,并为它们命名。在my View.designer.cs文件中,一切看起来都很好

我正在使用以下语法创建绑定:

        this.AddBindings(
            new Dictionary<object, string>()
            {
                {lastname, "{'Text':{'Path':'LastName','Mode':'TwoWay'}}"},
                {uservin, "{'Text':{'Path':'CarVIN','Mode':'TwoWay'}}"}

            });
this.AddBindings(
新字典()
{
{lastname,{'Text':{'Path':'lastname','Mode':'TwoWay'}},
{uservin,“{'Text':{'Path':'CarVIN','Mode':'TwoWay'}}”
});
当我从lastname UITextView移动到uservin UITextView时,我希望调用viewmodel中的SETTER,但它没有。当我单击按钮并检查ViewModel上两个文本属性的值时,它们都为null

有人知道我做错了什么吗?我在周二有一个快速的演示,所有其他平台都运行得很好,但似乎无法解决这个问题

干杯


/j

我认为问题在于您使用的是
UITextView
实例。。。但是mvvmcross vnext仅为
UITextField
元素提供双向绑定

要将
UITextView
2向绑定添加到较旧的mvvmcross版本,请执行以下操作:

  • 添加一个自定义目标绑定类-有点像v3中的这个:

  • 在Setup.cs期间使用如下代码注册:

    protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
    {
        base.FillTargetFactories(registry);
    
        registry.RegisterFactory(new MvxSimplePropertyInfoTargetBindingFactory(typeof(MvxUITextViewTextTargetBinding), typeof(UITextView), "Text");
    }
    

  • 可选(但可能不是在你的即时演示之前),你可以考虑升级到V3 beta版本。


    顺便说一句,使用“swiss”绑定语法现在通常是执行此操作的正常方式:

        this.AddBindings(
            new Dictionary<object, string>()
            {
                {lastname, "Text LastName"},
                {uservin, "Text CarVIN"}
            });
    
    this.AddBindings(
    新字典()
    {
    {lastname,“Text lastname”},
    {uservin,“Text CarVIN”}
    });
    

    。。。对于大多数非Windows MvvmCross绑定,
    two-way
    绑定是默认的。

    完美。再次感谢你,斯图尔特!