WpfApp/MainWindow.xaml.cs
2025-10-14 09:09:49 +08:00

139 lines
4.9 KiB
C#

using guoke;
using SqlSugar;
using System.Windows;
using System.Windows.Controls;
using WpfApp.Services;
using WpfApp.src.components;
using WpfApp.src.controllers;
using WpfApp.Utils;
namespace WpfApp;
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private readonly LogService log;
private readonly DatabaseService db;
private readonly EventService<GeneralEventArgs> even;
private readonly MenuController menu;
private readonly ChartManager chartManager;
private readonly CancellationTokenSource chartCts = new CancellationTokenSource();
private readonly SensorChartManager sensorManager;
private bool isDetecting = false; // 传感器检测状态
public MainWindow(LogService logService, DatabaseService databaseService, EventService<GeneralEventArgs> eventService)
{
InitializeComponent();
log = logService;
db = databaseService;
even = eventService;
menu = new MenuController(this);// 初始化菜单控制器
sensorManager = new SensorChartManager(this)
{
Sensor1 = Sensor1,
Sensor2 = Sensor2,
Sensor3 = Sensor3
};
sensorManager.Stop();
// 记录窗口初始化日志
log.Info("MainWindow", "主窗口已通过依赖注入初始化");
log.Info("窗体启动");
even.AddEventHandler("GeneralEvent", (m, d) =>
{
log.Info($"接收到事件:{d.Data}");
});
WindowHelper.SetWindowTitle(this, "FMSDGAUGE"); // 设置标题
chartManager = new ChartManager(Dispatcher);
chartManager.InitCharts(myChart1, myChart2, myChart3); // 初始化图表
// 启动实时数据刷新
chartManager.StartAutoUpdate(myChart1, chartCts.Token, "myChart1");
chartManager.StartAutoUpdate(myChart2, chartCts.Token, "myChart2");
chartManager.StartAutoUpdate(myChart3, chartCts.Token, "myChart3");
}
private void Button_Click(object sender, RoutedEventArgs e)
{
SqlSugarScope scope = db.GetScope("LocalData");
scope.guokeCheckToCreate<aaa>();//检查并创建表
even.TriggerEvent("GeneralEvent", this, new GeneralEventArgs("测试", 1));
}
public class aaa : BaseTableModel{}
#region
private void OnFilePageButtonClick(object sender, RoutedEventArgs e) => menu.OpenFilePage();
private void OnConfigPageButtonClick(object sender, RoutedEventArgs e) => menu.OpenConfigPage();
private void OnStandardPageButtonClick(object sender, RoutedEventArgs e) => menu.OpenStandardPage();
private void OnGaugePageButtonClick(object sender, RoutedEventArgs e) => menu.OpenGaugePage();
private void OnCgCgkPageButtonClick(object sender, RoutedEventArgs e) => menu.OpenCgCgkPage();
private void OnSysSetPageButtonClick(object sender, RoutedEventArgs e) => menu.OpenSysSetPage();
#endregion
#region
private void OnCloseMainWindowButtonClick(object sender, RoutedEventArgs e) => WindowHelper.CloseWindow(this); /// 按钮点击触发关闭页面
private void OnDemoButtonClick(object sender, RoutedEventArgs e){} /// 测试按钮
#endregion
/// <summary>
/// 控制传感器的采集开始和结束
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnSensorControl_Click(object sender, RoutedEventArgs e) {
if (!isDetecting)
{
// 开始检测
sensorManager.Start();
BtnSensorControl.Content = "检测确定";
isDetecting = true;
}
else
{
// 停止检测
sensorManager.Stop();
BtnSensorControl.Content = "检测开始";
isDetecting = false;
}
}
/// <summary>
/// 等级选择下拉框变化事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LevelComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (sender is ComboBox comboBox && comboBox.SelectedItem is ComboBoxItem selectedItem)
{
// 根据选择的Tag确定等级
SensorLevel selectedLevel = SensorLevel.Medium; // 默认值
switch (selectedItem.Tag?.ToString())
{
case "Low":
selectedLevel = SensorLevel.Low;
break;
case "Medium":
selectedLevel = SensorLevel.Medium;
break;
case "High":
selectedLevel = SensorLevel.High;
break;
}
// 更新所有传感器图表的等级
Sensor1.Level = selectedLevel;
Sensor2.Level = selectedLevel;
Sensor3.Level = selectedLevel;
}
}
}