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

ダイアログフラグメントを開く新しい方法があるので、パラメータで作成されたビューモデルを割り当てることができますか?

ありがとうございます。

答えて

0

ダイアログの組み込みサポートをhttps://github.com/MvvmCross/MvvmCross/pull/2099に追加しました。これは現在Mygetで利用可能で、次のMvvmCrossリリースの一部としてリリースされます。また、複数のビューモデルインスタンスに対してより永続的な修正を加える作業も行っています。

関連する問題