我有一个 MvxBaseBindableCollectionViewCell,它加载一个包含自定义按钮的 xib。我希望能够将此自定义按钮传递给要绑定(bind)的 ViewModel。这可能吗?
我正在尝试实现类似 MyButton.ViewModel = ViewModel.ChildViewModel
的效果,并将 ViewModel.ChildViewModel.Name 显示为按钮标题。
最佳答案
如果您想自定义绑定(bind)单元格,那么http://slodge.blogspot.co.uk/2013/01/uitableviewcell-using-xib-editor.html中有关于此的教程。
如果您想在该 View 中创建一个完全可绑定(bind)的 UIButton,那么您可以使用一些继承来完成此操作,例如:
[Register("MyButton")]
public class MyButton
: UIButton
, IMvxServiceConsumer
{
private IList<IMvxUpdateableBinding> _bindings;
private const string BindingText = "SpecialTitle Customer.Name";
public MyButton()
{
}
public MyButton(IntPtr handle)
: base(handle)
{
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
foreach (var binding in _bindings)
{
binding.Dispose();
}
_bindings.Clear();
}
base.Dispose(disposing);
}
private object _dc;
public object DataContext
{
get { return _dc; }
set
{
_dc = value;
if (_bindings == null)
{
var binder = this.GetService<IMvxBinder>();
_bindings = binder.Bind(_dc, this, BindingText).ToList();
}
else
{
foreach (var binding in _bindings)
{
binding.DataContext = _dc;
}
}
}
}
public string SpecialTitle
{
get { return this.GetTitle(UIControlState.Normal); }
set { this.SetTitle(value, UIControlState.Normal); }
}
}
旁白> MvvmCross v3“Hot Tuna”将包含一些帮助器类,以使此操作变得更简单。
关于xamarin.ios - MvvmCross Touch 项目中的自定义可绑定(bind)控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073262/