wpf的轻量级框架Stylet怎么做主线程的消息通知机制,可以参考Stylet的wiki文档,Home · canton7/Stylet Wiki · GitHub
也可以直接利用token进行针对下发。代码在下面
定义的Token:
public static class ViewModelTokens
{
public static string WaitingViewModel = "ECCP.ViewModels.WaitingViewModel";
public static string StrategyViewModel = "ECCP.ViewModels.LightingStrategyViewModel";
public static string MasterStrategyViewModel = "ECCP.ViewModels.MasterStrategyViewModel";
public static string MasterSettingViewModel = "ECCP.ViewModels.MasterSettingViewModel";//MasterControlViewModel
public static string MasterControlViewModel = "ECCP.ViewModels.MasterControlViewModel";
}
订阅事件:
//继承 IHandle
public class LightingStrategyViewModel : ViewModelBase, IHandle<Dictionary<string, object>>
{
public LightingStrategyViewModel(IWindowManager windowManger, IEventAggregator eventAggregator
)
{
WindowManger = windowManger;
EventAggregator = eventAggregator;
//这里订阅
EventAggregator.Subscribe(this, ViewModelTokens.StrategyViewModel);
}
}
发布消息:
//Stylet的IEventAggregator
Stylet.IEventAggregator mediator = _serviceProvider.GetService<IEventAggregator>();
Dictionary<string, object> keyValues = new Dictionary<string, object>();
keyValues.Add("Id", hisModel.CommandKey);
keyValues.Add("OnOrOff", openLighet);
keyValues.Add("Brightness", brightness);
//根据token发布消息
mediator.Publish(keyValues, ViewModelTokens.StrategyViewModel);
就这样