0
我最近開始使用MvvmCross 5並使用新的INavigationService。使用MvvmCross打開對話框片段時創建ViewModel的多個實例
不過,我一直無法找到呈現對話片段,我還是用我的舊方法在自定義演示(MvxFragmentsPresenter)的任何新的方法如下:
protected override void ShowFragment(MvxViewModelRequest request)
{
var currentActivity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
var appActivity = currentActivity as MvvmCross.Droid.FullFragging.Views.MvxActivity;
if (appActivity != null)
{
var loaderService = Mvx.Resolve<IMvxViewModelLoader>();
var viewModel = loaderService.LoadViewModel(request, null);
if (request.ViewModelType == typeof(ExampleViewModel))
{
var dialogFragment = new ExampleDialogFragment();
dialogFragment.ViewModel = (ExampleViewModel)viewModel;
dialogFragment.SetStyle(DialogFragmentStyle.Normal, Resource.Style.MainDialogTheme);
dialogFragment.Show(appActivity.FragmentManager, ExampleDialogFragment.DialogTag);
return;
}
}
我的問題當我需要將參數傳遞給此對話框片段時,導航服務會創建具有正確參數的視圖模型,但當它顯示片段時,自定義演示者將構造一個不帶任何參數的新視圖模型,並將其設置爲新的對話框片段。
我已經嘗試使用MvxDefaultViewModelLocator而不是加載程序,但這只是做同樣的事情。
var locatorService = Mvx.Resolve<IMvxViewModelLocator>();
var viewModel = locatorService.Load(request.ViewModelType, new MvxBundle(request.ParameterValues), null);
是否有一種新的方法來打開對話框片段,以便使用參數創建的視圖模型可以分配給它?
感謝您的指點。