问题描述
我想使用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>();