using HMI.Core.Api; using HMI.Core.Entity; using HMI.Core.Manager; using HMI.Core.Util; using HMI.UI.Util; using Panuon.WPF.UI; using Plugin.TestResult_WPF.Model; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; namespace Plugin.TestResult_WPF { /// /// InfoWindow.xaml 的交互逻辑 /// public partial class InfoWindow : WindowX { private string _title; public string title { get => _title; set => Set(ref _title, value); } private ObservableCollection _dataSource; public ObservableCollection dataSource { get => _dataSource == null ? new ObservableCollection() : _dataSource; set => Set(ref _dataSource, value); } private Chart electricChart; public InfoWindow(string title, ObservableCollection infos, Chart electricChart, int probeCount) { this.title = title; this.dataSource = infos; DataContext = this; Topmost = false; InitializeComponent(); if (AlarmProbeCount < 0) { alarmLabel.Visibility = Visibility.Collapsed; alarmValue.Visibility = Visibility.Collapsed; } UpdateProbeCount(probeCount); this.electricChart = electricChart; mainGrid.Children.Add(electricChart); Grid.SetRow(electricChart, 1); } private static int AlarmProbeCount; static InfoWindow() { int probeWarn = -1; try { probeWarn = Convert.ToInt32(ParameterManager.GetCommonParameter>() .FirstOrDefault(x => x.Name == "ProbeWarn")?.Value); } catch (Exception ex) { probeWarn = -1; } AlarmProbeCount = probeWarn; } public event EventHandler ClearProbeCountEvent; private int probeCount; public int ProbeCount { get => probeCount; set { Set(ref probeCount, value); } } public int ProbeWarn { get => AlarmProbeCount; set { } } public void UpdateProbeCount(int count) { Dispatcher.Invoke(() => { ProbeCount = count; if (AlarmProbeCount >= 0) { probeCountAlarm.Visibility = (ProbeCount >= AlarmProbeCount) ? Visibility.Visible : Visibility.Collapsed; } }); } public void UpdateSource(ObservableCollection infos) { this.dataSource = infos; } private void Window_Loaded(object sender, RoutedEventArgs e) { DataContext = this; } private void Window_Unloaded(object sender, RoutedEventArgs e) { DataContext = null; } protected override void OnClosed(EventArgs e) { electricChart = null; mainGrid.Children.Clear(); base.OnClosed(e); } private void Window_SizeChanged(object sender, SizeChangedEventArgs e) { if (electricChart != null) { electricChart.Height = this.ActualHeight * 0.3; } } private void Button_Click(object sender, RoutedEventArgs e) { if (MsgBoxHelper.WarnMessage(this, "确定要清空探针使用次数吗?") == MessageBoxResult.OK) { ClearProbeCountEvent?.Invoke(this, null); } } } }