using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using NLog; using Prism.Events; using Prism.Regions; using RIZO_Application.Core; using RIZO_Application.Core.Mvvm; namespace RIZO_Application.Modules.Base.ViewModels { public class SystemLogViewModel : RegionViewModelBase { private readonly IEventAggregator _eventAggregator; private SubscriptionToken _token; private string _logMessage = ""; private Logger _logger = LogManager.GetCurrentClassLogger(); public string LogMessage { get { return _logMessage; } set { SetProperty(ref _logMessage, value); } } public SystemLogViewModel( IRegionManager regionManager, IEventAggregator eventAggregator) : base(regionManager) { OnLogReceived("初始化日志系统"); _eventAggregator = eventAggregator; // 订阅事件,使用UI线程处理,保持强引用 _token = _eventAggregator.GetEvent().Subscribe(OnLogReceived, ThreadOption.UIThread, true); } private void OnLogReceived(string message) { Debug.WriteLine(message); LogMessage += $"\n{DateTime.Now}: {message}"; _logger.Info($"\n{DateTime.Now}: {message}"); } public void Destroy() { _token?.Dispose(); } public void AddTestLogMessage() { } public override void OnNavigatedTo(NavigationContext navigationContext) { //do something } } }