using SWRIS.Dtos; using System.Collections.ObjectModel; using System.ComponentModel; namespace SWRIS.Models.ViewModel { public class DamagesViewModel : INotifyPropertyChanged { private RecordDto _record; private ObservableCollection _sensors; private bool _isSummaryActive = true; private bool _isSensorSyncing; public RecordDto Record { get => _record; set { if (_record != value) { _record = value; OnPropertyChanged(nameof(Record)); } } } public ObservableCollection Sensors { get => _sensors; set { if (_sensors != value) { _sensors = value; OnPropertyChanged(nameof(Sensors)); } } } public bool IsSummaryActive { get => _isSummaryActive; set { if (_isSummaryActive != value) { _isSummaryActive = value; OnPropertyChanged(nameof(IsSummaryActive)); if (_isSummaryActive) { // 合值被选中:取消所有传感器的选中状态 foreach (var sensor in Sensors) { sensor.IsActive = false; } } else if (!_isSensorSyncing) { // 合值被取消(用户主动操作):自动选中所有传感器 foreach (var sensor in Sensors) { sensor.IsActive = true; } } } } } /// /// 标记当前是否由"选中传感器"联动取消合值,避免联动时反向自动选中所有传感器 /// public bool IsSensorSyncing { get => _isSensorSyncing; set => _isSensorSyncing = value; } public event PropertyChangedEventHandler PropertyChanged; protected internal virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }