WpfApp/src/view/ConfigPage.xaml.cs
2025-10-14 13:44:17 +08:00

476 lines
13 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 guoke;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace WpfApp.src.view;
/// <summary>
/// ConfigPage.xaml 的交互逻辑
/// </summary>
public partial class ConfigPage : Page
{
// 等级数据字典,每个等级对应 LevelInfo
private Dictionary<string, LevelInfo> levelData;
private Dictionary<int, SensorToleranceData> 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, LevelInfo>();
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<int, SensorToleranceData>
{
{ 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;
}
}
}
/// <summary>
/// 产品信息数据类
/// </summary>
public class Product
{
/// <summary>
/// 主键 ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 产品名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdatedTime { get; set; }
}
/// <summary>
/// 传感器选择数据类
/// </summary>
public class SensorSelection
{
/// <summary>
/// 主键 ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 传感器1 名称或编号
/// </summary>
public bool Sensor1 { get; set; }
/// <summary>
/// 传感器2 名称或编号
/// </summary>
public bool Sensor2 { get; set; }
/// <summary>
/// 传感器3 名称或编号
/// </summary>
public bool Sensor3 { get; set; }
/// <summary>
/// 传感器4 名称或编号
/// </summary>
public bool Sensor4 { get; set; }
/// <summary>
/// 所属产品名称
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdatedTime { get; set; }
}
/// <summary>
/// 传感器公差数据类
/// </summary>
public class SensorToleranceData
{
/// <summary>
/// 主键 ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 传感器名称(如 “传感器1”
/// </summary>
public string SensorName { get; set; }
/// <summary>
/// 最大公差
/// </summary>
public string MaxTolerance { get; set; }
/// <summary>
/// 基准公差
/// </summary>
public string BaseTolerance { get; set; }
/// <summary>
/// 最小公差
/// </summary>
public string MinTolerance { get; set; }
/// <summary>
/// 所属产品名称
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdatedTime { get; set; }
}
/// <summary>
/// 主传感器选择数据类
/// </summary>
public class MainSensorSelection
{
/// <summary>
/// 主键 ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 数字传感器1 是否为主传感器
/// </summary>
public bool DigitalSensor1 { get; set; }
/// <summary>
/// 数字传感器2 是否为主传感器
/// </summary>
public bool DigitalSensor2 { get; set; }
/// <summary>
/// 数字传感器3 是否为主传感器
/// </summary>
public bool DigitalSensor3 { get; set; }
/// <summary>
/// 数字传感器4 是否为主传感器
/// </summary>
public bool DigitalSensor4 { get; set; }
/// <summary>
/// 所属产品名称
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdatedTime { get; set; }
}
/// <summary>
/// 等级信息数据类
/// </summary>
public class LevelInfo
{
/// <summary>
/// 主键 ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 等级名称例如A级、B级、C级
/// </summary>
public string Name { get; set; }
/// <summary>
/// 等级下限值
/// </summary>
public string Low { get; set; }
/// <summary>
/// 等级上限值
/// </summary>
public string High { get; set; }
/// <summary>
/// 等级标记(例如:合格、不合格、警告等)
/// </summary>
public string Mark { get; set; }
/// <summary>
/// 当前状态(例如:启用、停用)
/// </summary>
public string Status { get; set; }
/// <summary>
/// 所属产品名称
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdatedTime { get; set; }
}