Xamarin.android MvvmCross是否允许将ViewModel属性绑定到动态创建的控件?

Xamarin.android MvvmCross是否允许将ViewModel属性绑定到动态创建的控件?,xamarin.android,Xamarin.android,我有一个应用程序,其中大多数控件都是在代码中创建的,然后使用AddView方法添加到布局中。框架是否允许使用代码将ViewModel属性绑定到控件,或者只需在axml文件中进行绑定?是MvvmCross支持将属性绑定到运行时创建的控件。您可以在N+1系列中观看令人敬畏的斯图尔特先生的本教程。 注意:他在这个系列中已经展示了很多次,但我现在还记得这一次。好吧,经过一番努力,我终于找到了答案 我必须做以下事情 1) 添加了导入语句: using Cirrious.MvvmCross.Binding

我有一个应用程序,其中大多数控件都是在代码中创建的,然后使用AddView方法添加到布局中。框架是否允许使用代码将ViewModel属性绑定到控件,或者只需在axml文件中进行绑定?

是MvvmCross支持将属性绑定到运行时创建的控件。您可以在N+1系列中观看令人敬畏的斯图尔特先生的本教程。


注意:他在这个系列中已经展示了很多次,但我现在还记得这一次。

好吧,经过一番努力,我终于找到了答案

我必须做以下事情

1) 添加了导入语句:

using Cirrious.MvvmCross.Binding.BindingContext;
2) 添加了以下代码:

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    SetContentView(Resource.Layout.Hello);

    TableLayout containerLayout = this.FindViewById<TableLayout>(Resource.Id.containerLayout);
    if (containerLayout != null)
    {                          
        TableRow newRow = new TableRow(base.ApplicationContext);
        newRow.SetMinimumHeight(50);

        var txtRace = new EditText(ApplicationContext);
        txtRace.Hint = "Race";

        var bindingSet = this.CreateBindingSet<HelloView, HelloViewModel>();
        bindingSet.Bind(txtRace).To(vm => vm.Race);
        bindingSet.Apply();

        newRow.AddView(txtRace);
        containerLayout.AddView(newRow);
    }
}
protectedoverride void OnCreate(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Hello);
TableLayout containerLayout=this.FindViewById(Resource.Id.containerLayout);
if(containerLayout!=null)
{                          
TableRow newRow=新的TableRow(base.ApplicationContext);
newRow.SetMinimumHeight(50);
var txtRace=新编辑文本(ApplicationContext);
txtRace.Hint=“种族”;
var bindingSet=this.CreateBindingSet();
bindingSet.Bind(txtRace.To)(vm=>vm.Race);
bindingSet.Apply();
newRow.AddView(txtRace);
containerLayout.AddView(newRow);
}
}
我在HelloView.axml文件中已经有了一个“TableLayout”,我所做的就是创建一个新的EditText box控件(txtRace)并将其添加到视图中,同时将其绑定到HelloViewModel对象的“Race”属性

我花了很多时间试图弄清楚CreateBindingSet()方法存在于什么名称空间中,因为VS2012并没有给我任何关于这方面的提示


希望这对面临类似问题的人有所帮助。

感谢Mohib的回复。我仍然对这个问题感到震惊。我正在看这篇文章:。我面临的问题是无法获取方法CreateBindingSet()。当前我的活动继承自MVXAActivity。我是否缺少一些程序集引用或命名空间。感谢您提供视频链接。斯图尔特先生提到的可以有多个视图模型的部分很有帮助。很高兴知道你把它分类了。祝你好运!