using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using linesider_screen_bankend.Core.Mvvm; using linesider_screen_bankend.Modules.ModuleName.Event; using linesider_screen_bankend.Services.Interfaces; using Prism.Events; using Prism.Regions; namespace linesider_screen_bankend.Modules.ModuleName.ViewModels { public class CommonLogViewModel : RegionViewModelBase { private readonly IEventAggregator _eventAggregator; private SubscriptionToken _token; private ILogService _logService; private string _logMessage; public string LogMessage { get { return _logMessage; } set { SetProperty(ref _logMessage, value); } } public CommonLogViewModel(IRegionManager regionManager, ILogService logService, IEventAggregator eventAggregator) : base(regionManager) { _eventAggregator = eventAggregator; // 订阅事件,使用UI线程处理,保持强引用 _token = _eventAggregator.GetEvent() .Subscribe(OnLogReceived, ThreadOption.UIThread, true); LogMessage = logService.GetInitMessage(); _logService = logService; } private void OnLogReceived(string message) { LogMessage += $"{DateTime.Now}: {message}\n"; _logService.AddMessage(message); // 使用日志服务记录 } public void Destroy() { _token?.Dispose(); } public void AddLogMessage() { _logService.AddMessage("123"); } public override void OnNavigatedTo(NavigationContext navigationContext) { //do something } } }