【问题标题】:Setting ViewModel for MvxFragment为 MvxFragment 设置 ViewModel
【发布时间】:2014-10-11 14:10:54
【问题描述】:

我正在使用 Xamarin.AndroidMVVMCross 开发应用程序,并且在尝试为 Fragment (MvxFragment) 设置 ViewModel (MvxViewModel) 时遇到了一些问题)。

到目前为止,在我的研究中,我发现了一些示例,但它们似乎已经过时,因此不再有用。

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

我的具体情况是我正在尝试创建一个带有抽屉布局的应用程序,我工作得很好,问题是当我通过 FragmentManager 加载 MvxFragment 子类时strong> 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 扩展的 View 关联?

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

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

【问题讨论】:

  • 我正在研究 MvxFragments 并且有一些不错的东西可以工作,例如找到自己的 ViewModel 的 Fragment。我现在在我的叉子里,我正在完成一个样品。这当然最终会被拉入 MvvmCross

标签: android xamarin fragment viewmodel mvvmcross


【解决方案1】:

我不敢相信我错过了这个,但解决方案真的很简单。我所要做的就是添加这个。

using Cirrious.MvvmCross.Binding.Droid.BindingContext;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多