ConnectionStateHelper.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Avalonia.Media;
  2. namespace YZWater.Avalonia.Controls;
  3. /// <summary>
  4. /// PLC 连接状态辅助类 - 供自定义控件订阅连接状态变化,实现断线降级显示。
  5. /// 遵循 ISA-101 标准:断线时控件停止动画、变灰、叠加"通信中断"标记。
  6. /// </summary>
  7. internal static class ConnectionStateHelper
  8. {
  9. /// <summary>连接状态变化事件</summary>
  10. public static event Action<bool>? StateChanged;
  11. /// <summary>当前是否已连接</summary>
  12. public static bool IsConnected { get; private set; } = true;
  13. /// <summary>断线态灰色画刷(统一降级视觉)</summary>
  14. public static IBrush DisconnectedGray { get; } = new SolidColorBrush(Color.Parse("#6B7280"));
  15. /// <summary>断线态文字画刷</summary>
  16. public static IBrush DisconnectedText { get; } = new SolidColorBrush(Color.Parse("#9CA3AF"));
  17. /// <summary>断线警告色(橙黄)</summary>
  18. public static IBrush DisconnectedWarning { get; } = new SolidColorBrush(Color.Parse("#F5A524"));
  19. /// <summary>半透明遮罩(用于叠加在控件上表示数据失效)</summary>
  20. public static IBrush OverlayBrush { get; } = new SolidColorBrush(Color.Parse("#000000"), 0.25);
  21. /// <summary>
  22. /// 设置连接状态(由 App 层在连接状态变化时调用)
  23. /// </summary>
  24. public static void SetConnected(bool connected)
  25. {
  26. if (IsConnected == connected) return;
  27. IsConnected = connected;
  28. StateChanged?.Invoke(connected);
  29. }
  30. }