2013-02-25 106 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