我正在使用Xamarin.
Android和MVVMCross开发一个应用程序,我在试图为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
我的具体情况是我正在尝试创建一个带有drawerlayout的应用程序,我工作得很好,问题是当我通过FragmentManager加载MvxFragment子类时ViewModel没有与View关联(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与我的View相关联,这是MVxFragment的扩展?
不确定这是否有帮助,但我正在创建像这样的片段
var fragment = new HomeView();
FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, fragment).Commit();
最佳答案 我无法相信我错过了这个,但解决方案非常简单.我所要做的就是添加这个.
using Cirrious.MvvmCross.Binding.Droid.BindingContext;