gpt4 book ai didi

ios - MvvmCross:从外部绑定(bind)MvxTableViewCell

转载 作者:行者123 更新时间:2023-11-29 03:42:06 24 4
gpt4 key购买 nike

我创建了一个 MvxTableViewCell我计划在应用程序的许多点重用该子类,因此我想将绑定(bind)任务委托(delegate)给单元格的创建者。

到目前为止,我的工作是基于一些 N+1 tutorial例子,主要是this code来自 N=17-Collect a Bull part 3教程。

此时,创建一个单元格如下所示:

return new SubtitleCell("TitleText Name; SubtitleText Subject.Descripcion"))

但我不太喜欢在字符串中定义的绑定(bind),因为我通常会进行大量重构,这可能会在不久的将来造成麻烦,所以我决定像这样声明绑定(bind),就像这样的普通可绑定(bind) View :

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;

这现在像以前一样工作,现在它是重构安全的,但它是我以前的代码行数的六倍,并且必须在已经创建单元格实例时定义绑定(bind)。

我认为可以使用 MvxBindingDescription 来完成因为第一个示例中使用的绑定(bind)文本被解析为 IEnumerable<MvxBindingDescription> ,但我无法找到有关它的示例或文档。

谁能给我指出正确的方向吗?

谢谢。

编辑:LoC 不是我最关心的问题,但必须在定义绑定(bind)之前实例化每个单元格,我很高兴有这样的东西:

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);

有什么可以这样移动吗?

更新:刚刚注意到第二个绑定(bind)示例在我的日志控制台中填充了以下错误:

MvxBind:Warning:  0.40 Unable to bind: source property source not foundCirrious.MvvmCross.Binding.Parse.PropertyPath.PropertyTokens.MvxPropertyNamePropertyToken on null-object

两个示例似乎都会产生相同的行为,但警告错误仅在使用流畅绑定(bind)时出现。

最佳答案

MvxBindingDescription 对重构并没有真正的帮助 - 它在文本或流畅绑定(bind)之上以及绑定(bind)引擎的反射级别之下运行。

如果您想要基于 Expression 的绑定(bind)进行重构,那么您必须使用 Fluent 绑定(bind)并付出额外代码行的代价(如果您认为这是一种惩罚)

关于ios - MvvmCross:从外部绑定(bind)MvxTableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com