我創建了一個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