Files
wcs/货架标准上位机/Views/Controls/DeviceView.xaml.cs
hehaibing-1996 e89b64ea3a !提交代码
2024-04-15 18:43:28 +08:00

391 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using .ViewModel;
using HandyControl.Controls;
using Ping9719.WpfEx;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
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
{
/// <summary>
/// 设备手动信息
/// </summary>
public partial class DeviceView : UserControlBase
{
DeviceViewModel viewModel = new DeviceViewModel();
public DeviceView()
{
InitializeComponent();
//viewModel.plc = LocalStatic.Plc;
this.DataContext = viewModel;
}
//第一次显示渲染Ui
private void visfir(object sender, EventArgs e)
{
if (IsInDesignMode)
return;
if (!System.IO.File.Exists(LocalFile.PlcDotPath))
{
Growl.Info($"没有找到文档[{LocalFile.PlcDotPath}],请联系管理员。");
return;
}
//读Excel
viewModel.DataReads = ExcelDeviceReadModel.GetDatas();
viewModel.DataWrites = ExcelDeviceWriteModel.GetDatas();
viewModel.DataUrns = ExcelDeviceUrnModel.GetDatas();
viewModel.DataServos = ExcelDeviceServoModel.GetDatas();
//加载页面
ReadUi(viewModel.DataReads);
WriteUi(viewModel.DataWrites);
UrnUi(viewModel.DataUrns);
ServoUi(viewModel.DataServos);
//展示限制
viewModel.IsVisRead = viewModel.DataReads.Any();
viewModel.IsVisWrite = viewModel.DataWrites.Any();
viewModel.IsVisUrn = viewModel.DataUrns.Any();
viewModel.IsVisServo = viewModel.DataServos.Any();
Task.Run(viewModel.WhileRead);
}
private void vis(object sender, DependencyPropertyChangedEventArgs e)
{
if (IsInDesignMode)
return;
viewModel.IsVis = (bool)e.NewValue;
}
#region
void ReadUi(IEnumerable<DeviceReadModel> data)
{
stackPanel1.Children.Clear();
if (data == null || !data.Any())
return;
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.));
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.)).GroupBy(o => o.ExcelTag.);
if (moren.Any())
{
WrapPanel wrapPanel = new WrapPanel();
foreach (var item in moren)
{
item.Value = item.ExcelTag..Trim().ToLower() == "bool" ? false : "-";
item.IsExpanded = true;
IotStateInfo iotState = new IotStateInfo();
iotState.DataContext = item;
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item.Name));
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item.Value));
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item.ExcelTag)}.{nameof(item.ExcelTag.单位)}");
wrapPanel.Children.Add(iotState);
}
stackPanel1.Children.Add(wrapPanel);
}
if (group.Any())
{
foreach (var item in group)
{
Expander expander = new Expander();
expander.Header = item.Key;
expander.Tag = item;
expander.Expanded += (s, e) =>
{
var c = (IGrouping<string, DeviceReadModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = true;
}
};
expander.Collapsed += (s, e) =>
{
var c = (IGrouping<string, DeviceReadModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = false;
}
};
WrapPanel wrapPanel = new WrapPanel();
foreach (var item2 in item)
{
item2.Value = item2.ExcelTag..Trim().ToLower() == "bool" ? false : "-";
IotStateInfo iotState = new IotStateInfo();
iotState.DataContext = item2;
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item2.Name));
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item2.Value));
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item2.ExcelTag)}.{nameof(item2.ExcelTag.单位)}");
wrapPanel.Children.Add(iotState);
}
expander.Content = wrapPanel;
stackPanel1.Children.Add(expander);
}
}
}
void WriteUi(IEnumerable<DeviceWriteModel> data)
{
if (true)
{
stackPanel2.Children.Clear();
if (data == null || !data.Any())
return;
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.));
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.)).GroupBy(o => o.ExcelTag.);
if (moren.Any())
{
WrapPanel wrapPanel = new WrapPanel();
foreach (var item in moren)
{
item.Value = item.ExcelTag..Trim().ToLower() == "bool" ? false : "-";
item.IsExpanded = true;
IotStateInfo iotState = new IotStateInfo();
iotState.DataContext = item;
iotState.Click += viewModel.WriteClick;
iotState.PreviewMouseLeftButtonDown += viewModel.LeftDown;
iotState.PreviewMouseLeftButtonUp += viewModel.LeftUp;
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item.Name));
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item.Value));
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item.ExcelTag)}.{nameof(item.ExcelTag.单位)}");
wrapPanel.Children.Add(iotState);
}
stackPanel2.Children.Add(wrapPanel);
}
if (group.Any())
{
foreach (var item in group)
{
Expander expander = new Expander();
expander.Header = item.Key;
expander.Tag = item;
expander.Expanded += (s, e) =>
{
var c = (IGrouping<string, DeviceWriteModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = true;
}
};
expander.Collapsed += (s, e) =>
{
var c = (IGrouping<string, DeviceWriteModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = false;
}
};
WrapPanel wrapPanel = new WrapPanel();
foreach (var item2 in item)
{
item2.Value = item2.ExcelTag..Trim().ToLower() == "bool" ? false : "-";
IotStateInfo iotState = new IotStateInfo();
iotState.DataContext = item2;
iotState.Click += viewModel.WriteClick;
iotState.PreviewMouseLeftButtonDown += viewModel.LeftDown;
iotState.PreviewMouseLeftButtonUp += viewModel.LeftUp;
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item2.Name));
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item2.Value));
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item2.ExcelTag)}.{nameof(item2.ExcelTag.单位)}");
wrapPanel.Children.Add(iotState);
}
expander.Content = wrapPanel;
stackPanel2.Children.Add(expander);
}
}
}
}
void UrnUi(IEnumerable<DeviceUrnModel> data)
{
if (true)
{
stackPanel3.Children.Clear();
if (data == null || !data.Any())
return;
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.));
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.)).GroupBy(o => o.ExcelTag.);
if (moren.Any())
{
WrapPanel wrapPanel = new WrapPanel();
foreach (var item in moren)
{
item.IsExpanded = true;
IotUrnMode iotUrn = new IotUrnMode();
iotUrn.DataContext = item;
iotUrn.SetBinding(IotUrnMode.TextProperty, nameof(item.Name));
iotUrn.SetBinding(IotUrnMode.IsButBadge1Property, nameof(item.IsGoTo));
iotUrn.SetBinding(IotUrnMode.IsButBadge2Property, nameof(item.IsRetTo));
iotUrn.Button1.Click += viewModel.Button1_Click;
iotUrn.Button1.PreviewMouseLeftButtonDown += viewModel.But1ClickDown;
iotUrn.Button1.PreviewMouseLeftButtonUp += viewModel.But1ClickUp;
iotUrn.Button2.Click += viewModel.Button2_Click;
iotUrn.Button2.PreviewMouseLeftButtonDown += viewModel.But2ClickDown;
iotUrn.Button2.PreviewMouseLeftButtonUp += viewModel.But2ClickUp;
wrapPanel.Children.Add(iotUrn);
}
stackPanel3.Children.Add(wrapPanel);
}
if (group.Any())
{
foreach (var item in group)
{
Expander expander = new Expander();
expander.Header = item.Key;
expander.Tag = item;
expander.Expanded += (s, e) =>
{
var c = (IGrouping<string, DeviceUrnModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = true;
}
};
expander.Collapsed += (s, e) =>
{
var c = (IGrouping<string, DeviceUrnModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = false;
}
};
WrapPanel wrapPanel = new WrapPanel();
foreach (var item2 in item)
{
IotUrnMode iotUrn = new IotUrnMode();
iotUrn.DataContext = item2;
iotUrn.SetBinding(IotUrnMode.TextProperty, nameof(item2.Name));
iotUrn.SetBinding(IotUrnMode.IsButBadge1Property, nameof(item2.IsGoTo));
iotUrn.SetBinding(IotUrnMode.IsButBadge2Property, nameof(item2.IsRetTo));
iotUrn.Button1.Click += viewModel.Button1_Click;
iotUrn.Button1.PreviewMouseLeftButtonDown += viewModel.But1ClickDown;
iotUrn.Button1.PreviewMouseLeftButtonUp += viewModel.But1ClickUp;
iotUrn.Button2.Click += viewModel.Button2_Click;
iotUrn.Button2.PreviewMouseLeftButtonDown += viewModel.But2ClickDown;
iotUrn.Button2.PreviewMouseLeftButtonUp += viewModel.But2ClickUp;
wrapPanel.Children.Add(iotUrn);
}
expander.Content = wrapPanel;
stackPanel3.Children.Add(expander);
}
}
}
}
void ServoUi(IEnumerable<DeviceServoModel> data)
{
if (true)
{
stackPanel4.Children.Clear();
if (data == null || !data.Any())
return;
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.));
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.)).GroupBy(o => o.ExcelTag.);
if (moren.Any())
{
WrapPanel wrapPanel = new WrapPanel();
foreach (var item in moren)
{
item.IsExpanded = true;
IotServoMode iotServo = new IotServoMode();
iotServo.DataContext = item;
iotServo.SetBinding(IotServoMode.TextProperty, nameof(item.Name));
iotServo.SetBinding(IotServoMode.Speed1Property, nameof(item.JogSpeed));
iotServo.SetBinding(IotServoMode.Speed2Property, nameof(item.AutoSpeed));
iotServo.SetBinding(IotServoMode.LocationProperty, nameof(item.Location));
iotServo.SetBinding(IotServoMode.IsVis1Property, new Binding(nameof(item.IsJog)) { Mode = BindingMode.TwoWay });
iotServo.SetBinding(IotServoMode.IsFoldProperty, new Binding(nameof(item.IsFold)) { Mode = BindingMode.TwoWay });
iotServo.LocationChange += viewModel.LocationChange;
iotServo.SpeedChange += viewModel.SpeedChange;
wrapPanel.Children.Add(iotServo);
}
stackPanel4.Children.Add(wrapPanel);
}
if (group.Any())
{
foreach (var item in group)
{
Expander expander = new Expander();
expander.Header = item.Key;
expander.Tag = item;
expander.Expanded += (s, e) =>
{
var c = (IGrouping<string, DeviceServoModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = true;
}
};
expander.Collapsed += (s, e) =>
{
var c = (IGrouping<string, DeviceServoModel>)((Expander)s).Tag;
foreach (var item in c)
{
item.IsExpanded = false;
}
};
WrapPanel wrapPanel = new WrapPanel();
foreach (var item2 in item)
{
IotServoMode iotServo = new IotServoMode();
iotServo.DataContext = item2;
iotServo.SetBinding(IotServoMode.TextProperty, nameof(item2.Name));
iotServo.SetBinding(IotServoMode.Speed1Property, nameof(item2.JogSpeed));
iotServo.SetBinding(IotServoMode.Speed2Property, nameof(item2.AutoSpeed));
iotServo.SetBinding(IotServoMode.LocationProperty, nameof(item2.Location));
iotServo.SetBinding(IotServoMode.IsVis1Property, new Binding(nameof(item2.IsJog)) { Mode = BindingMode.TwoWay });
iotServo.SetBinding(IotServoMode.IsFoldProperty, new Binding(nameof(item2.IsFold)) { Mode = BindingMode.TwoWay });
iotServo.LocationChange += viewModel.LocationChange;
iotServo.SpeedChange += viewModel.SpeedChange;
wrapPanel.Children.Add(iotServo);
}
expander.Content = wrapPanel;
stackPanel4.Children.Add(expander);
}
}
}
}
#endregion
}
}