为MvxFragment设置ViewModel

时间:2014-08-18 15:41:09

标签: android xamarin fragment viewmodel mvvmcross

我正在使用 Xamarin.Android MVVMCross 处理应用程序,我遇到了尝试为片段设置ViewModel(MvxViewModel)的一些问题(MvxFragment )。

在我的研究中,到目前为止,我已经找到了一些例子,但它们看起来相当陈旧,因此不再有用。

https://forums.xamarin.com/discussion/3652/mvvmcross-activity-vs-fragment http://slodge.blogspot.com/2013/06/n26-fragments-n1-days-of-mvvmcross.html

我的具体情况是我正在尝试创建一个带有drawerlayout的应用程序,我工作得很好,问题是当我通过 FragmentManager加载 MvxFragment 子类时 ViewModel未与View关联(在将View从Activity更改为Fragment之前,ViewModel已正确关联。)

当我查找有关如何执行此操作的文档时,我找到了以下代码

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var ignored = base.OnCreateView(inflater, container, savedInstanceState);
        return this.BindingInflate(Resource.Layout.Fragment_Detail, null);
    }

这个问题是MvxFragment中没有方法BindingInflate(...)

这是我的OnCreateView的样子

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var ignored = base.OnCreateView(inflater, container, savedInstanceState);
        var view = inflater.Inflate(Resource.Layout.HomeView, container, false);
        return view;
    }

所以我的问题归结为:我如何将我的ViewModel与我的视图相关联,这是MVxFragment的扩展?

不确定这是否有帮助,但我正在创建像这样的片段

var fragment = new HomeView();
FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, fragment).Commit();

1 个答案:

答案 0 :(得分:2)

我无法相信我错过了这个,但解决方案非常简单。我所要做的就是添加这个。

using Cirrious.MvvmCross.Binding.Droid.BindingContext;