using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Check.Main.Common { /// /// 封装了所有生产统计数据的模型。 /// 实现了INotifyPropertyChanged,未来可用于数据绑定。 /// public class StatisticsData : INotifyPropertyChanged { private int _goodCount; private int _ngCount; public int GoodCount { get => _goodCount; private set { _goodCount = value; OnPropertyChanged(nameof(GoodCount)); OnPropertyChanged(nameof(TotalCount)); OnPropertyChanged(nameof(YieldRate)); } } public int NgCount { get => _ngCount; private set { _ngCount = value; OnPropertyChanged(nameof(NgCount)); OnPropertyChanged(nameof(TotalCount)); OnPropertyChanged(nameof(YieldRate)); } } public int TotalCount => GoodCount + NgCount; public double YieldRate => TotalCount == 0 ? 0 : (double)GoodCount / TotalCount; /// /// 根据检测结果更新统计数据。 /// public void UpdateWithResult(bool isOk) { if (isOk) GoodCount++; else NgCount++; } /// /// 重置所有统计数据。 /// public void Reset() { GoodCount = 0; NgCount = 0; } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } /// /// 用于在检测完成事件中传递结果的事件参数。 /// public class DetectionResultEventArgs : EventArgs { public bool IsOK { get; } public DetectionResultEventArgs(bool isOk) { IsOK = isOk; } } }