LogViewModel.cs 1.5 KB

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