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