【发布时间】:2013-08-16 11:09:54
【问题描述】:
我已经创建了一个MvxTableViewCell 子类,我计划在我的应用程序的许多地方重用它,所以我想将绑定任务委托给单元格的创建者。
到目前为止,我是根据一些N+1 tutorial 示例来完成这项工作的,主要是来自N=17-Collect a Bull part 3 教程的this code。
所以此时,创建一个单元格如下所示:
return new SubtitleCell("TitleText Name; SubtitleText Subject.Descripcion"))
但我不太喜欢在字符串中定义的绑定,因为我通常会重构很多,这可能会在不久的将来造成麻烦,所以我决定像这样的普通可绑定视图一样声明绑定:
var cell = new SubtitleCell();
var set = cell.CreateBindingSet<SubtitleCell, SubjectGroup>();
set.Bind().For(c => c.TitleText).To(g => g.Name);
set.Bind().For(c => c.SubtitleText).To(g => g.Subject.Descripcion);
set.Apply();
return cell;
这现在像以前一样工作,现在它是重构安全的,但它是我以前的代码行数的六倍,并且必须在已创建单元格实例时定义绑定。
我认为可以使用MvxBindingDescription 来完成,因为第一个示例中使用的绑定文本被解析为IEnumerable<MvxBindingDescription>,但我找不到有关它的示例或文档。
谁能指出我正确的方向?
谢谢。
编辑: LoC 不是我最关心的问题,但必须在定义绑定之前实例化每个单元格,我很高兴有这样的东西:
var set = Mvx.CreateBindingSet<SubtitleCell, SubjectGroup>();
set.Bind().For(c => c.TitleText).To(g => g.Name);
set.Bind().For(c => c.SubtitleText).To(g => g.Subject.Descripcion);
所以我以后可以像这样应用它:
var cell = new SubtitleCell();
cell.ApplyBindingSet(set);
这样移动有什么可以做的吗?
更新: 刚刚注意到第二个绑定示例在我的日志控制台中填充了这个错误:
MvxBind:Warning: 0.40 Unable to bind: source property source not found Cirrious.MvvmCross.Binding.Parse.PropertyPath.PropertyTokens.MvxPropertyNamePropertyToken on null-object
两个示例似乎产生了相同的行为,但警告错误仅在使用流式绑定时出现。
【问题讨论】:
标签: ios uitableview xamarin.ios mvvmcross