41 lines
1.0 KiB
C#
41 lines
1.0 KiB
C#
using Logger;
|
|
using Prism.Mvvm;
|
|
using System.Collections.ObjectModel;
|
|
using System.Windows;
|
|
using System.Windows.Media;
|
|
using System.Windows.Threading;
|
|
|
|
namespace BOB.ViewModels
|
|
{
|
|
public class LogAreaViewModel : BindableBase
|
|
{
|
|
// 日志集合
|
|
private ObservableCollection<LogItem> _logs = new();
|
|
public ObservableCollection<LogItem> Logs
|
|
{
|
|
get => _logs;
|
|
set => SetProperty(ref _logs, value);
|
|
}
|
|
|
|
public LogAreaViewModel()
|
|
{
|
|
LoggerHelper.LogAdded += OnLogAdded;
|
|
}
|
|
|
|
// 方便外部添加日志
|
|
public void OnLogAdded(string message, string color)
|
|
{
|
|
var brush = (Brush)new BrushConverter().ConvertFromString(color);
|
|
Application.Current.Dispatcher.Invoke(() => Logs.Add(new LogItem { Message = message, Color = brush }));
|
|
|
|
}
|
|
}
|
|
|
|
// 日志条目类
|
|
public class LogItem
|
|
{
|
|
public string Message { get; set; }
|
|
public Brush Color { get; set; } = Brushes.Black;
|
|
}
|
|
}
|