64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
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<CommonLogEvent>()
|
||
.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
|
||
}
|
||
}
|
||
}
|