using guoke; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace WpfApp.src.view; /// /// ConfigPage.xaml 的交互逻辑 /// public partial class ConfigPage : Page { // 等级数据字典,每个等级对应 LevelInfo private Dictionary levelData; private Dictionary sensorData; public ConfigPage() { InitializeComponent(); InitializeLevelData(); InitializeSensorData(); // 注册等级标签按钮点击事件 LevelTabUnder.Click += LevelTab_Click; LevelTabA.Click += LevelTab_Click; LevelTabB.Click += LevelTab_Click; LevelTabC.Click += LevelTab_Click; LevelTabD.Click += LevelTab_Click; LevelTabE.Click += LevelTab_Click; LevelTabF.Click += LevelTab_Click; LevelTabG.Click += LevelTab_Click; LevelTabOver.Click += LevelTab_Click; // 默认选中 Under LevelTabUnder.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } // 初始化等级数据 private void InitializeLevelData() { levelData = new Dictionary(); string[] tabs = { "Under", "A", "B", "C", "D", "E", "F", "G", "Over" }; foreach (var tab in tabs) { // 默认数据和 Under 一样 levelData[tab] = new LevelInfo { Low = "-0.0090", High = "0.0090", Mark = "标记", Status = "NG" }; } } // 等级标签按钮点击事件 private void LevelTab_Click(object sender, RoutedEventArgs e) { if (sender is Button btn && btn.Tag is string tabName) { // 保存当前显示的数据到上一个等级 SaveCurrentLevelData(); // 更新标签按钮样式 UpdateTabStyles(btn); // 加载选中等级的数据 LoadLevelData(tabName); } } // 保存当前显示的等级数据 private void SaveCurrentLevelData() { string currentTab = GetCurrentSelectedTab(); if (currentTab == null) return; foreach (var child in LevelInfoPanel.Children) { if (child is Grid g) { foreach (var element in g.Children) { if (element is TextBox tb && Grid.GetColumn(tb) == 2 && Grid.GetRow(tb) == 1) { levelData[currentTab].Low = tb.Text; } if (element is Border br && Grid.GetColumn(br) == 3 && Grid.GetRow(br) == 1) { if (br.Child is TextBlock tblock) levelData[currentTab].Status = tblock.Text; } // 如果你后续要保存 High 或 Mark,可以在这里添加 } } } } // 获取当前选中的标签名 private string GetCurrentSelectedTab() { foreach (var child in ((Grid)LevelTabUnder.Parent).Children) { if (child is Button b && b.Background is SolidColorBrush brush) { if (brush.Color == ((SolidColorBrush)new BrushConverter().ConvertFrom("#E6F3FF")).Color) return b.Tag?.ToString(); } } return null; } // 更新等级标签按钮样式 private void UpdateTabStyles(Button selectedBtn) { foreach (var child in ((Grid)LevelTabUnder.Parent).Children) { if (child is Button b) { b.Background = (b == selectedBtn) ? new SolidColorBrush((Color)ColorConverter.ConvertFromString("#E6F3FF")) : new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F0F0F0")); } } } // 加载等级数据到界面 private void LoadLevelData(string tabName) { if (!levelData.ContainsKey(tabName)) return; var data = levelData[tabName]; foreach (var child in LevelInfoPanel.Children) { if (child is Grid g) { foreach (var element in g.Children) { if (element is TextBox tb && Grid.GetColumn(tb) == 2 && Grid.GetRow(tb) == 1) { tb.Text = data.Low; } if (element is Border br && Grid.GetColumn(br) == 3 && Grid.GetRow(br) == 1) { if (br.Child is TextBlock tblock) tblock.Text = data.Status; } // High 或 Mark 可在此扩展 } } } } // 初始化传感器数据 private void InitializeSensorData() { sensorData = new Dictionary { { 1, new SensorToleranceData { MaxTolerance = "9.00", BaseTolerance = "72.9410", MinTolerance = "-9.00" } }, { 2, new SensorToleranceData { MaxTolerance = "8.50", BaseTolerance = "72.8500", MinTolerance = "-8.50" } }, { 3, new SensorToleranceData { MaxTolerance = "7.80", BaseTolerance = "72.7800", MinTolerance = "-7.80" } }, { 4, new SensorToleranceData { MaxTolerance = "6.90", BaseTolerance = "72.6900", MinTolerance = "-6.90" } } }; } // 传感器标签页点击事件处理 private void SensorTab_Click(object sender, RoutedEventArgs e) { Button clickedButton = sender as Button; if (clickedButton == null) return; int sensorIndex = int.Parse(clickedButton.Tag.ToString()); // 保存当前传感器的数据 SaveCurrentSensorData(); // 更新标签页样式 UpdateTabStyles(sensorIndex); // 加载选中传感器的数据 LoadSensorData(sensorIndex); } // 保存当前传感器的数据 private void SaveCurrentSensorData() { // 获取当前选中的传感器索引 int currentSensorIndex = GetCurrentSelectedSensorIndex(); if (sensorData.ContainsKey(currentSensorIndex)) { sensorData[currentSensorIndex].MaxTolerance = MaxToleranceTextBox.Text; sensorData[currentSensorIndex].BaseTolerance = BaseToleranceTextBox.Text; sensorData[currentSensorIndex].MinTolerance = MinToleranceTextBox.Text; } } // 获取当前选中的传感器索引 private int GetCurrentSelectedSensorIndex() { if (SensorTab1.Background is SolidColorBrush brush1 && brush1.Color == ((SolidColorBrush)new BrushConverter().ConvertFrom("#E6F3FF")).Color) return 1; if (SensorTab2.Background is SolidColorBrush brush2 && brush2.Color == ((SolidColorBrush)new BrushConverter().ConvertFrom("#E6F3FF")).Color) return 2; if (SensorTab3.Background is SolidColorBrush brush3 && brush3.Color == ((SolidColorBrush)new BrushConverter().ConvertFrom("#E6F3FF")).Color) return 3; if (SensorTab4.Background is SolidColorBrush brush4 && brush4.Color == ((SolidColorBrush)new BrushConverter().ConvertFrom("#E6F3FF")).Color) return 4; return 1; // 默认返回传感器1 } // 更新标签页样式 private void UpdateTabStyles(int selectedIndex) { // 重置所有标签页样式 SensorTab1.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F0F0F0")); SensorTab2.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F0F0F0")); SensorTab3.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F0F0F0")); SensorTab4.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F0F0F0")); // 设置选中标签页样式 switch (selectedIndex) { case 1: SensorTab1.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#E6F3FF")); break; case 2: SensorTab2.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#E6F3FF")); break; case 3: SensorTab3.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#E6F3FF")); break; case 4: SensorTab4.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#E6F3FF")); break; } } // 加载传感器数据 private void LoadSensorData(int sensorIndex) { if (sensorData.ContainsKey(sensorIndex)) { var data = sensorData[sensorIndex]; MaxToleranceTextBox.Text = data.MaxTolerance; BaseToleranceTextBox.Text = data.BaseTolerance; MinToleranceTextBox.Text = data.MinTolerance; } } } /// /// 产品信息数据类 /// public class Product { /// /// 主键 ID /// public int Id { get; set; } /// /// 产品名称 /// public string Name { get; set; } /// /// 创建时间 /// public DateTime CreatedTime { get; set; } /// /// 更新时间 /// public DateTime UpdatedTime { get; set; } } /// /// 传感器选择数据类 /// public class SensorSelection { /// /// 主键 ID /// public int Id { get; set; } /// /// 传感器1 名称或编号 /// public bool Sensor1 { get; set; } /// /// 传感器2 名称或编号 /// public bool Sensor2 { get; set; } /// /// 传感器3 名称或编号 /// public bool Sensor3 { get; set; } /// /// 传感器4 名称或编号 /// public bool Sensor4 { get; set; } /// /// 所属产品名称 /// public string ProductName { get; set; } /// /// 创建时间 /// public DateTime CreatedTime { get; set; } /// /// 更新时间 /// public DateTime UpdatedTime { get; set; } } /// /// 传感器公差数据类 /// public class SensorToleranceData { /// /// 主键 ID /// public int Id { get; set; } /// /// 传感器名称(如 “传感器1”) /// public string SensorName { get; set; } /// /// 最大公差 /// public string MaxTolerance { get; set; } /// /// 基准公差 /// public string BaseTolerance { get; set; } /// /// 最小公差 /// public string MinTolerance { get; set; } /// /// 所属产品名称 /// public string ProductName { get; set; } /// /// 创建时间 /// public DateTime CreatedTime { get; set; } /// /// 更新时间 /// public DateTime UpdatedTime { get; set; } } /// /// 主传感器选择数据类 /// public class MainSensorSelection { /// /// 主键 ID /// public int Id { get; set; } /// /// 数字传感器1 是否为主传感器 /// public bool DigitalSensor1 { get; set; } /// /// 数字传感器2 是否为主传感器 /// public bool DigitalSensor2 { get; set; } /// /// 数字传感器3 是否为主传感器 /// public bool DigitalSensor3 { get; set; } /// /// 数字传感器4 是否为主传感器 /// public bool DigitalSensor4 { get; set; } /// /// 所属产品名称 /// public string ProductName { get; set; } /// /// 创建时间 /// public DateTime CreatedTime { get; set; } /// /// 更新时间 /// public DateTime UpdatedTime { get; set; } } /// /// 等级信息数据类 /// public class LevelInfo { /// /// 主键 ID /// public int Id { get; set; } /// /// 等级名称(例如:A级、B级、C级) /// public string Name { get; set; } /// /// 等级下限值 /// public string Low { get; set; } /// /// 等级上限值 /// public string High { get; set; } /// /// 等级标记(例如:合格、不合格、警告等) /// public string Mark { get; set; } /// /// 当前状态(例如:启用、停用) /// public string Status { get; set; } /// /// 所属产品名称 /// public string ProductName { get; set; } /// /// 创建时间 /// public DateTime CreatedTime { get; set; } /// /// 更新时间 /// public DateTime UpdatedTime { get; set; } }