我在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进行绑定。
答案 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
:/如果可以得到一些运作良好且可靠的东西,然后非常乐意接受作为拉取请求回到框架中。