android-Mvvmcross在代码上绑定片段的子代

我在Xamarin中使用MvvMCross绑定片段代码有一点问题.
首先,我想做什么或我要做什么:
我希望我的解释还可以.我从最低的元素开始.
首先,我建立动态的UI.
我有很多“模板”.它们定义了我的片段片段,例如Lable和ACTextEdit-Field.

然后,我有很多片段(我的视图).它们包含此代码片段
在单独的课程中,我将片段添加到“片段”中,并为其赋予唯一的ID
我的基础是将片段和ViewPager与Mvx结合使用的教程. Ostebaron:

http://blog.ostebaronen.dk/2013/07/fragments-and-viewpager-with-mvx.html

现在,我必须使用Fragement和VieModel创建一个Bindingset.然后,我必须将元素与视图模型中的属性绑定.
但是我不知道代码中的哪个位置.我试图在HomeView的OncreateView函数中执行此操作,但是它没有用.

有人知道如何解决这个问题或给我一些建议吗?

我选择绑定此:

using Android.OS;
using Android.Views;
using Android.Widget;
using Cirrious.MvvmCross.Binding.BindingContext;
using Cirrious.MvvmCross.Binding.Droid.BindingContext;
using Cirrious.MvvmCross.Droid.Fragging.Fragments;
using TipCalc.Core.ViewModels;

namespace TipCalc.UI.Droid.Views.Fragments
{

    public class TipCalcFragment : MvxFragment
    {
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
           View v = inflater.Inflate(Resource.Layout.view_tip, container, false);
            var edit = v.FindViewById<TextView>(Resource.Id.editTest43);
            var ignore = base.OnCreateView(inflater, container, savedInstanceState);
            var set = this.CreateBindingSet<TipCalcFragment, TipViewModel>();
            set.Bind(edit).To(vm => vm.Tip);
            set.Apply();
            return this.BindingInflate(Resource.Layout.view_tip, null);
        }
    }
}

并且它可能无法在错误的地方工作?

解决方法:

我强烈建议您在布局文件中声明绑定.
然后,您的OnCreateView可以简化为:

public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    this.EnsureBindingContextIsSet (savedInstanceState);
    return this.BindingInflate(Resource.Layout.UserHeaderView, null);
}

即使未在布局文件中声明它,也应始终调用SecureBindingContextIsSet.这是一个扩展方法,因此您可能必须声明

> Cirrious.MvvmCross.Binding.BindingContext
> Cirrious.MvvmCross.Binding.Droid.BindingContext

在您的使用中.

上一篇:在Android上从ByteArrayOutputStream播放视频


下一篇:android-无法绑定自定义MvvmCross视图