我创建了一个MvxTableViewCell
子类,我打算在应用程序的许多位置重用,所以我想将绑定任务委托给单元的创建者。MvvmCross:从外部绑定MvxTableViewCell
到目前为止,我基于N+1 tutorial的一些例子得到了这个工作,主要是this code from N=17-Collect a Bull part 3教程。
在这一点上所以,创造一个细胞看起来是这样的:
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>
,但我无法找到有关它的示例或文档。
任何人都可以指向正确的方向吗?
谢谢。
编辑: 控制线是不是我最关心的,但具有限定结合之前实例化每一个单元,我很高兴能有这样的事情:
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);
有没有什么可以做到这样移动?
UPDATE: 只注意到第二结合例子填满我的日志控制台与此错误:
MvxBind:Warning: 0.40 Unable to bind: source property source not found Cirrious.MvvmCross.Binding.Parse.PropertyPath.PropertyTokens.MvxPropertyNamePropertyToken on null-object
两个样本似乎产生相同的行为,但警告错误只能用流利的结合出现。
感谢您的答复斯图尔特,请参阅我的编辑更多细节。 – redent84