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); 

是否有一種新的方法來打開對話框片段,以便使用參數創建的視圖模型可以分配給它?

感謝您的指點。

回答

相關問題