MVVMCross,FieldBinding插件,iOS,代码绑定不起作用

时间:2014-10-08 23:17:09

标签: c# ios xamarin mvvmcross

我在iOS应用程序中使用MVVMCross / Xamarin。 我有ViewModel,其属性定义如下:

public readonly INC<Address> Entity = new NC<Address>();

,其中

public class Address
{
    public string Line1 { get; set; }

    public string Line2 { get; set; }

    public string Line3 { get; set; }
    //other properties...
}

如果我以这种方式绑定,它可以工作:

set.Bind(Line1Text).To("Entity.Line1").TwoWay();

如果我这样做有约束力,它就不起作用并输出警告(见下文):

set.Bind(Line1Text).To(vm => vm.Entity.Value.Line1).TwoWay();

我得到的错误是没有构造绑定。 来自应用程序输出的警告:

  

2014-10-08 19:12:15.341 IosTemplate [8442:248933] MvxBind:警告:   12.63无法绑定:找不到源属性源属性:地址上的值

请告知,如何使用lambda表达方式与INC / NC进行绑定。

1 个答案:

答案 0 :(得分:1)

  

请告知,如何使用lambda表达方式与INC / NC进行绑定

Field Binding plugin并未附带对流畅表达式解析的任何扩展,因此这种类型的链式表达式无法以流畅的形式完成,无需额外的工作。

如果你想扩展流式绑定表达式的解析方式或者评估绑定的方式 - 为INC添加一些特殊情况 - 那么我相信这可以做到,但它需要一些实验和编码才能做到这一点。例如,您可以尝试在https://github.com/MvvmCross/MvvmCross/blob/3.2/Plugins/Cirrious/FieldBinding/Cirrious.MvvmCross.Plugins.FieldBinding/MvxChainedNotifyChangeFieldSourceBinding.cs#L32中检查和操作childList,以便从列表中删除Value项 - 尽管这可能会删除偶尔的正确Value:/如果可以得到一些运作良好且可靠的东西,然后非常乐意接受作为拉取请求回到框架中。