using HMI.Core.Util; using HMI.UI.Util; using Panuon.WPF.UI; using Plugin.TestResult_WPF.Model; using System; using System.Collections.ObjectModel; 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 LiveChart waterChart; private LiveChart electricChart; private LiveChart vChart; //public InfoWindow(string title, ObservableCollection infos, Chart waterChart, Chart electricChart, Chart vChart, int probeCount, int probeWarn) //{ // this.title = title; // this.dataSource = infos; // DataContext = this; // Topmost = false; // this.ProbeWarn = probeWarn; // InitializeComponent(); // UpdateProbeCount(probeCount,probeWarn); // if (waterChart != null) // { // this.waterChart = waterChart; // mainGrid.Children.Add(waterChart); // Grid.SetRow(waterChart, 1); // } // this.electricChart = electricChart; // mainGrid.Children.Add(electricChart); // Grid.SetRow(electricChart, 2); // this.vChart = vChart; // mainGrid.Children.Add(vChart); // Grid.SetRow(vChart, 3); //} public InfoWindow(string title, ObservableCollection infos, LiveChart[] charts, int probeCount, int probeWarn) { this.title = title; this.dataSource = infos; DataContext = this; Topmost = false; this.ProbeWarn = probeWarn; InitializeComponent(); UpdateProbeCount(probeCount, probeWarn); int row = 1; foreach (var chart in charts) { if (chart == null) return; mainGrid.Children.Add(chart); Grid.SetRow(chart, row++); } //if (waterChart != null) //{ // this.waterChart = waterChart; // mainGrid.Children.Add(waterChart); // Grid.SetRow(waterChart, 1); //} //this.electricChart = electricChart; //mainGrid.Children.Add(electricChart); //Grid.SetRow(electricChart, 2); //this.vChart = vChart; //mainGrid.Children.Add(vChart); //Grid.SetRow(vChart, 3); } public event EventHandler ClearProbeCountEvent; private int probeCount; public int ProbeCount { get => probeCount; set { Set(ref probeCount, value); } } public int ProbeWarn { get; set; } public void UpdateProbeCount(int count, int warn) { Dispatcher.Invoke(() => { ProbeCount = count; ProbeWarn = warn; if (ProbeWarn < 0) { alarmLabel.Visibility = Visibility.Collapsed; alarmValue.Visibility = Visibility.Collapsed; } else { probeCountAlarm.Visibility = (ProbeCount >= ProbeWarn) ? 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) { waterChart = null; electricChart = null; vChart = 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, this.lang("Ts.MakeSureToClearProbeCount")) == MessageBoxResult.OK) { ClearProbeCountEvent?.Invoke(this, null); } } } }