using SunlightCentralizedControlManagement_SCCM_.EX; using SunlightCentralizedControlManagement_SCCM_.UserClass; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Threading; using static SunlightCentralizedControlManagement_SCCM_.ViewModel.MainWindowViewModel; namespace SunlightCentralizedControlManagement_SCCM_.ViewModel { public class MonitorViewModel : ViewModelBase { public MonitorViewModel() { // DispatcherTimer timer1s = new DispatcherTimer(DispatcherPriority.Normal);//初始化循环,每1秒调用一次Tick // timer1s.Interval = TimeSpan.FromMilliseconds(950);//秒 // timer1s.Tick += Tick_Main_1S; // timer1s.Start(); } void Tick_Main_1S(object sender, EventArgs e)//Tick_Event周期执行事件1S { DATA_view(); } public string sys_machine; //显示log public string Sys_machine //通知UI控件参数改变 { get { return sys_machine; } set { sys_machine = value; OnPropertyChanged("Sys_machine"); } } public static bool TechnologicalProcess_bool = true; private async void DATA_view()//IO显示 { await Task.Run(() => { try { TechnologicalMachine_View = ToObservableCollection(Machines); } catch (Exception) { } try { if (dt_TP.Rows.Count >= 0) { if (TechnologicalProcess_bool) TechnologicalProcess_View = ToObservableCollection(dt_TP); Sys_machine = MachineLOG; } } catch (Exception) { } }); } ObservableCollection technologicalProcess_View = new ObservableCollection(); ObservableCollection technologicalMachine_View = new ObservableCollection(); public ObservableCollection TechnologicalProcess_View { get { return technologicalProcess_View; } set { technologicalProcess_View = value; RaisePropertyChanged("TechnologicalProcess_View"); } } public ObservableCollection TechnologicalMachine_View { get { return technologicalMachine_View; } set { technologicalMachine_View = value; RaisePropertyChanged("TechnologicalMachine_View"); } } public class TechnologicalM { public string Name { get; set; } public string WorkOrder { get; set; } public string Dyelot { get; set; } public string Temperature { get; set; } public string WaterLevel { get; set; } public string Process { get; set; } public string Step { get; set; } public string Message { get; set; } public string State { get; set; } } public class TechnologicalP { public string ProgramID { get; set; } public string Program { get; set; } public double Step { get; set; } public string StepID { get; set; } public string StepName { get; set; } public string ParameterName { get; set; } public string Parameter1 { get; set; } public string Parameter2 { get; set; } public string Parameter3 { get; set; } public string Parameter4 { get; set; } public string Parameter5 { get; set; } public string DYELOT { get; set; } } public ObservableCollection ToObservableCollection(DataTable dt) where T : class, new() { Type t = typeof(T); PropertyInfo[] propertys = t.GetProperties(); ObservableCollection lst = new ObservableCollection(); string typeName = string.Empty; foreach (DataRow dr in dt.Rows) { T entity = new T(); foreach (PropertyInfo pi in propertys) { typeName = pi.Name; if (dt.Columns.Contains(typeName)) { if (!pi.CanWrite) continue; object value = dr[typeName]; if (value == DBNull.Value) continue; if (pi.PropertyType == typeof(string)) { pi.SetValue(entity, value.ToString(), null); } else if (pi.PropertyType == typeof(int) || pi.PropertyType == typeof(int?)) { pi.SetValue(entity, int.Parse(value.ToString()), null); } else if (pi.PropertyType == typeof(DateTime?) || pi.PropertyType == typeof(DateTime)) { pi.SetValue(entity, DateTime.Parse(value.ToString()), null); } else if (pi.PropertyType == typeof(float)) { pi.SetValue(entity, float.Parse(value.ToString()), null); } else if (pi.PropertyType == typeof(double)) { pi.SetValue(entity, double.Parse(value.ToString()), null); } else { pi.SetValue(entity, value, null); } } } lst.Add(entity); } return lst; } } }