WPF MVVMLight 框架Message消息重复发送问题
在MVVMLight 中使用Message实现后台ViewModel命令执行触发View.cs的函数,出现发一次消息但是执行两次消息反馈代码
Messenger.Default.Send<BaseData>(new BaseData(datas), MessageTokenEnm.ShowFrequencyData);
原因分析
在这个链接中看到上图回答多个实例的ViewModel任然在内存中意识到我的同一个UserControl使用了两次,并且消息是在构造函数注册的,所以内存中就有两处能接收消息。
public partial class ucTime : UserControl
{
Crosshair Crosshair;
public ucTime()
{
InitializeComponent();
timePlot.Plot.Title("时域图");
timePlot.Plot.XLabel("时间s");
Crosshair = timePlot.Plot.AddCrosshair(0, 0);
timePlot.Render();
Messenger.Default.Register<BaseData>(this, MessageTokenEnm.ShowTimeData, ShowData);
//卸载当前(this)对象注册的所有MVVMLight消息,
//基于View界面内的UnRegister的释放(为当前视图页面的Unload事件)可以指定令牌的名称,如“ViewAlert”
this.Unloaded += (sender, e) => Messenger.Default.Unregister(this);
}
}