我创建了自定义MvxTableViewCell,并将所有设计布局放置在.xib文件中:
public partial class FxTransactionCell: MvxTableViewCell
{
public static readonly NSString Key = new NSString("FxTransactionCell");
public static readonly UINib Nib = UINib.FromName(Key, NSBundle.MainBundle);
static FxTransactionCell()
{
}
protected FxTransactionCell(IntPtr handle): base(handle)
{
// Note: this .ctor should not contain any initialization logic.
}
}
我见过的所有示例都将初始化/绑定逻辑放入(IntPtr)构造函数中,但请注意VS在那里放置了注释。我认为此构造函数无法保存任何初始化逻辑,因为尚未创建我的自定义UI元素,并且我的所有UILabel,UIButton(在.xib文件中的布局)在此构造函数内均为null。 那么,我应该在哪里放置我的init / bindings逻辑呢?
答案 0 :(得分:0)
在您的公共构造函数中,应放置init / binding逻辑。
请注意,您必须使用DelayBind(...)
在MvxTableViewCell
public FxTransactionCell()
{
// Init views if you need to
// Create the bindings
this.DelayBind(this.CreateBindings);
}
public FxTransactionCell(IntPtr handle) : base(handle)
{
// Some people repeat the same logic here just in case the above ctor does not get called, ignoring the note from VS but I don't think it's necessary.
}
private void CreateBindings()
{
var set = this.CreateBindingSet<FxTransactionCell, FxTransactionItemViewModel>();
set.Bind(this.MyLabel).To(vm => vm.MyStringProperty);
set.Apply();
}
HIH