android - 代码 fragment 的 Mvvmcross 绑定(bind)子项

标签 android xamarin mvvmcross model-binding

我在使用 Xamarin 中的 MvvMCross 绑定(bind) fragment 代码时遇到了一些问题。 首先是我想做什么或我做什么: 我希望我的解释没问题。我从最低的元素开始。 首先,我构建我的 UI 动态。 我有很多"template"。它们定义了我的 fragment fragment ,例如标签和 ACTextEdit-Field。

然后我有很多 fragment (我的观点)。它们包含此代码 fragment 在一个单独的类中,我将 fragment 添加到 fragment 中并为它们提供唯一的 ID 我的基础是使用 Fragments 和 ViewPager with Mvx 的教程。 Ostebaron 的:

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

现在我必须用我的 Fragement 和我的 VieModel 创建一个 Bindingset。然后我必须将元素与 View 模型中的属性绑定(bind)。 但是我不知道在代码的哪个地方。我尝试在 HomeView 的 OncreateView 函数中执行此操作,但没有成功。

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

我选择这个来绑定(bind):

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);
        }
    }
}

它不工作可能是错误的地方?

最佳答案

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

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

即使不在布局文件中声明它,您也应该始终调用 EnsureBindingContextIsSet。它是一种扩展方法,因此您可能必须声明

  • Cirrious.MvvmCross.Binding.BindingContext
  • Cirrious.MvvmCross.Binding.Droid.BindingContext

在您的使用中。

关于android - 代码 fragment 的 Mvvmcross 绑定(bind)子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22692780/

相关文章:

安卓java.lang.IllegalStateException : Fragment already added

android - Session.StatusCallback Facebook Android sdk3.0 onActivityResult 和 onComplete 的区别

java - 我在我的电脑上找不到 Android SDK

c# - 通过 MvvmCross View 模型更改 CardView 背景颜色

c# - Android 应用程序太大,链接禁用功能

java - Android无法显示部分通过socket传输的图像

xaml - 如何在使用 xamarin shell 时更改状态栏颜色

c# - 无法使用的组件 HockeyApp for Android(Xamarin 组件商店)

android - 使用 mvvmcross 的 LinearLayout 背景颜色

image - 使用 mvvmcross 和 mono 选择图像时出现问题