MvxFragment ViewModels

时间:2015-05-01 12:04:16

标签: mvvmcross

我在使用MvvmCross 3.5时试图让Fragments工作。

我有以下片段:

public class MainView
  : MvxFragment<MenuView>
{

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

    return view;
 }
}

我一直在使用以下代码手动初始化ViewModel:

var loaderService = Mvx.Resolve<IMvxViewModelLoader>();
ViewModel = (T)loaderService.LoadViewModel(
           new MvxViewModelRequest(typeof(T), null, null, null), null);

这样可以正常工作,除非恢复片段,此时应用程序会以NullReferenceException炸毁。

我现在正在尝试使用MvxCachingFragmentActivity来处理片段的生命周期,但无法在其上找到任何文档。

我已注册片段:

RegisterFragment<MainView, MainViewModel>(typeof(MainView).Name, bundle);

然后显示一个:

ShowFragment(typeof(MainView).Name, Resource.Id.content_frame, bundle);

片段加载但ViewModel为null。我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

[MvxOwnedViewModelFragment] 
从3.5.1

开始,需要片段上的