AllAGCInfoCard.xaml.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using NEIntelligentControl2.Service.AGC;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Data;
  10. using System.Windows.Documents;
  11. using System.Windows.Input;
  12. using System.Windows.Media;
  13. using System.Windows.Media.Imaging;
  14. using System.Windows.Navigation;
  15. using System.Windows.Shapes;
  16. namespace NEIntelligentControl2.Views.AGC
  17. {
  18. /// <summary>
  19. /// 所有AGC关键信息卡片
  20. /// </summary>
  21. public partial class AllAGCInfoCard : UserControl
  22. {
  23. // -----------事件-------------
  24. public static readonly RoutedEvent SelectionChangedEvent = EventManager.RegisterRoutedEvent("SelectionChanged", RoutingStrategy.Bubble, typeof(EventHandler<RoutedEventArgs>), typeof(DynamicAGCCard));
  25. public event RoutedEventHandler SelectionChanged { add { AddHandler(SelectionChangedEvent, value); } remove { RemoveHandler(SelectionChangedEvent, value); } }
  26. private Dictionary<string, SimpleAGCCard> _SAGCCardPairt;// 简单AGC卡片集合
  27. private AGCManager _AGCManager;
  28. private bool _IsActive;
  29. public AllAGCInfoCard()
  30. {
  31. InitializeComponent();
  32. _AGCManager = App.ServiceProvider.GetService(typeof(AGCManager)) as AGCManager;
  33. _SAGCCardPairt = new Dictionary<string, SimpleAGCCard>();
  34. Init();
  35. }
  36. private void Init()
  37. {
  38. var vs = _AGCManager.AGCInfos;
  39. int index = 0;
  40. foreach (var v in vs)
  41. {
  42. if (_SAGCCardPairt.ContainsKey(v.Title)) continue;
  43. var card = new SimpleAGCCard(v);
  44. card.Tag = index++;
  45. card.MouseUp += Card_MouseUp;
  46. _SAGCCardPairt.Add(v.Title, card);
  47. _UGMain.Children.Add(card);
  48. }
  49. }
  50. /// <summary>
  51. /// 刷新数据
  52. /// </summary>
  53. internal async void RefreshData()
  54. {
  55. while (_IsActive)
  56. {
  57. try
  58. {
  59. Dispatcher.Invoke(() =>
  60. {
  61. foreach (var v in _SAGCCardPairt)
  62. {
  63. v.Value.PowerActual = v.Value.AGCInfo.AiPoints.Where(p => p.Type == Models.AGC.TagType.ActualPower).FirstOrDefault()?.Value.ToString("f2");
  64. v.Value.PowerSet = v.Value.AGCInfo.AiPoints.Where(p => p.Type == Models.AGC.TagType.PowerSet).FirstOrDefault()?.Value.ToString("f2");
  65. }
  66. });
  67. }
  68. catch { }
  69. await Task.Delay(2000);
  70. }
  71. }
  72. private void Card_MouseUp(object sender, MouseButtonEventArgs e)
  73. {
  74. RaiseEvent(new RoutedEventArgs(SelectionChangedEvent, sender));
  75. }
  76. private void UserControl_Loaded(object sender, RoutedEventArgs e)
  77. {
  78. _IsActive = true;
  79. Task.Run(RefreshData);
  80. }
  81. private void UserControl_Unloaded(object sender, RoutedEventArgs e)
  82. {
  83. _IsActive = false;
  84. }
  85. }
  86. }