xamarin.ios - MvvmCross Touch 项目中的自定义可绑定(bind)控件

标签 xamarin.ios mvvmcross

我有一个 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/

相关文章:

android - 为 iPhone/Android 和 WPF 开发

iphone - 无法从应用程序加载器上传应用程序

xamarin - 有没有办法在 Webview 中将 xamarin 登录页面连接到我的网站?

iphone - UIView 绘制时的背景色

ios - 使用 AutoLayout 在不同高度的两列中堆叠

c# - Visual Studio 无法识别 MvxFragment 的 BindingInflate 函数

c# - MvxException : Failed to construct and initialize ViewModel

xamarin.ios - 使用 Mvvmcross 隐藏 Xamarin 项目中的导航栏

MvvmCross 4 对 UWP 的支持,AppShell 缺少框架

c# - 从代码创建手势识别器