LogViewModel.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Avalonia.Collections;
  2. using IViewModel.Models;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace IViewModel.ViewModels
  8. {
  9. public sealed class LogViewModel:DisplayViewModelBase
  10. {
  11. public AvaloniaList<IndexValueItemViewModel<LogItemViewModel>> Logs { get; } = new AvaloniaList<IndexValueItemViewModel<LogItemViewModel>>();
  12. private LogViewModel()
  13. {
  14. ButtonVisibily = false;
  15. GetEvent<LogItemModel>().Subscrip((sender, args) =>
  16. {
  17. Tools.DispatherInovke.Inovke(() => Logs.Add(new IndexValueItemViewModel<LogItemViewModel>(Logs.Count + 1, new LogItemViewModel(args.Data.Message, args.Data.LogType))));
  18. });
  19. GetEvent(nameof(Models.LogItemModel)).Subscrip((sender, args) =>
  20. {
  21. if(args.Data.Length >=2 && args.Data[0] is string msg && args.Data[1] is LogType type)
  22. {
  23. AddLog(msg, type);
  24. }
  25. });
  26. }
  27. static LogViewModel()
  28. {
  29. }
  30. public void AddLog(string msg,LogType logType = LogType.Info)
  31. {
  32. Tools.DispatherInovke.Inovke(() => Logs.Add(new IndexValueItemViewModel<LogItemViewModel>(Logs.Count + 1, new LogItemViewModel(msg, logType))));
  33. }
  34. public static LogViewModel Instance { get; } = new LogViewModel();
  35. }
  36. }