Mvvm交叉使用IMvxMessenger 我的Core.ViewModels 我的WPFCore.ViewModels 我的Messenger模型错误

问题描述

我想使用IMvxMessenger插件,但是我无法在要使用它的地方初始化视图模型。

我的Core.viewmodels

public class Dataviewmodel : MvxNavigationviewmodel
    {
            protected readonly IMvxMessenger _messenger;
    
            public Dataviewmodel(IMvxLogProvider logProvider,IMvxNavigationService navigationService,IMvxMessenger messenger)
                : base(logProvider,navigationService)
            {
                this._messenger = messenger;
            }
    }

我的WPFCore.viewmodels

public class Dataviewmodel : Core.viewmodels.Dataviewmodel
{
    public Dataviewmodel(IMvxLogProvider logProvider,IMvxMessenger messenger)
            : base(logProvider,navigationService,messenger)
        {}

    protected new void SaveDyno()
    {
        var message = new Core.Models.MvxReloaderMessage(this,this.Dyno);
        this._messenger.Publish(message);
    }
}

我的Messenger模型

 public class MvxReloaderMessage
      : MvxMessage
    {
        public DynoModel Dyno
        {
            get;
            private set;
        }

        public MvxReloaderMessage(object sender,DynoModel dyno)
            : base(sender)
        {
            this.Dyno = dyno;
        }
    }

错误

“创建WPFCore.viewmodels.Dataviewmodel时,无法解析IMvxMessenger类型的参数Messenger的参数。您可以将其作为参数传递”

我也尝试了一些初始化,但是它不起作用或显示了一些错误

Mvx.RegisterType<IMvxMessenger,MvxReloaderMessage>();
Mvx.IoCProvider.RegisterSingleton<MvvmCross.Plugin.Messenger.IMvxMessenger>(new Core.Models.MvxReloaderMessage());
Mvx.IoCProvider.Resolve<MvvmCross.Plugin.Messenger.IMvxMessenger>();

解决方法

请确保插件已加载。您可以通过覆盖Setup.cs中的LoadPlugins并添加:

pluginManager.EnsurePluginLoaded<MvvmCross.Plugin.Messenger.Plugin>();