using EC.UsingEventAggregator; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Regions; using System.Collections.Specialized; namespace ECMonitor.Code.Models { public class BaseModel : BindableBase { public IRegionManager _regionManager { get; set; } public IEventAggregator _ea { get; set; } private string _title = ""; public string Title { get { return _title; } set { SetProperty(ref _title, value); } } public DelegateCommand SendMessageCommand { get; private set; } public BaseModel(IRegionManager regionManager, IEventAggregator ea) { _regionManager = regionManager; _ea = ea; _regionManager.Regions.CollectionChanged += Regions_CollectionChanged; SendMessageCommand = new DelegateCommand(SendMessage); _ea.GetEvent().Subscribe(MessageReceived); } public virtual void Regions_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) { var region = (IRegion)e.NewItems[0]; region.Views.CollectionChanged += Views_CollectionChanged; } } public virtual void Views_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) { } else if (e.Action == NotifyCollectionChangedAction.Remove) { } } public virtual void SendMessage(string message) { SendMessage(new LogModel(1, message)); } /// /// 发送消息 /// /// public virtual void SendMessage(LogModel log) { _ea.GetEvent().Publish(log); } public virtual void MessageReceived(LogModel log) { //Messages.Add(message); } #region 日志 public void Debug(string message) { } public void Info(string message) { } public void Error(string message) { } #endregion 日志 } }