2013-02-25 103 views
2

我有一个MvxBaseBindableCollectionViewCell,它加载一个包含自定义按钮的xib。我希望能够传递这个自定义按钮一个ViewModel绑定到。这可能吗?MvvmCross Touch项目中的自定义可绑定控件

我试图达到像MyButton.ViewModel = ViewModel.ChildViewModel这样的东西,并将ViewModel.ChildViewModel.Name显示为按钮标题。

回答

2

如果你想一个细胞的自定义绑定,那么就在http://slodge.blogspot.co.uk/2013/01/uitableviewcell-using-xib-editor.html

如果你想创建一个视图中完全绑定的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“热金枪鱼”将包含一些辅助类,使这个简单一点的事情。

+0

完美,谢谢。 :) – JayEss 2013-02-25 21:38:59