using NEIntelligentControl2.Models; using NEIntelligentControl2.Models.AGC; using NEIntelligentControl2.Models.Datas; using NEIntelligentControl2.Models.Messages; using NEIntelligentControl2.Models.Pages; using NEIntelligentControl2.Service.AGC; using NEIntelligentControl2.Views.AGC; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace NEIntelligentControl2.Pages.AGC { /// /// AGC页面 /// public partial class PageAGC : Page { /// /// 页面是否活跃 /// private bool _IsActived; private bool _IsLoaded; private TagManager _TagManager; private AGCManager _AGCManager; public PageAGC(TagManager tm, AGCManager am) { InitializeComponent(); _TagManager = tm; _AGCManager = am; } private void Page_Loaded(object sender, RoutedEventArgs e) { _TagManager.TagChanged?.Invoke(new List()); if (!_IsLoaded) { InitCards(); _IsLoaded = true; } _IsActived = true; Task.Factory.StartNew(RefreshData, TaskCreationOptions.LongRunning); Task.Factory.StartNew(RefreshLineData, TaskCreationOptions.LongRunning); } /// /// 曲线数据刷新 /// private async void RefreshLineData() { while (_IsLoaded) { _AGCManager.RefreshLineData(this); await Task.Delay(30000); } } /// /// 数据刷新 /// private async void RefreshData() { while (_IsActived) { _AGCManager.RefreshData(this); await Task.Delay(2000); } } private void InitCards() { int i = 0; var agcInfos = _AGCManager.AGCInfos; if (agcInfos == null) return; while (i < agcInfos.Count) { var vs = agcInfos.Where(ai => ai.Coordinate.X == i).ToList(); if (vs.Count <= 0) { break; } _GMain.RowDefinitions.Add(new RowDefinition()); Grid gd = new Grid(); foreach (var v in vs) { gd.ColumnDefinitions.Add(new ColumnDefinition()); AGCCard2 ac = new AGCCard2() { Info = v }; gd.Children.Add(ac); Grid.SetColumn(ac, v.Coordinate.Y); } if (gd.Children.Count < 3) { gd.HorizontalAlignment = HorizontalAlignment.Center; } _GMain.Children.Add(gd); Grid.SetRow(gd, i); ++i; } //_GMain.Height = this.ActualHeight / 2 * i; } private void Page_Unloaded(object sender, RoutedEventArgs e) { _IsActived = false; } private void Button_Click(object sender, RoutedEventArgs e) { var bt = sender as Button; if (bt == null) return; if (bt.Content.ToString() == "光 伏") { bt.Content = "风 机"; _sv.ScrollToEnd(); } else { bt.Content = "光 伏"; _sv.ScrollToTop(); } } private void _sv_ScrollChanged(object sender, ScrollChangedEventArgs e) { var v = e.VerticalOffset / e.ViewportHeight; _bt.Content = v <= 0.5 ? "光 伏" : "风 机"; } } }