diff --git a/Models/VariableData.cs b/Models/VariableData.cs
index 257a2e9..93e6c31 100644
--- a/Models/VariableData.cs
+++ b/Models/VariableData.cs
@@ -37,16 +37,16 @@ public class VariableData
///
public string Description { get; set; } = String.Empty;
- ///
- /// 变量经过转换或格式化后的显示值。
- ///
- public string DisplayValue { get; set; } = String.Empty;
-
///
/// 变量唯一标识符。
///
public int Id { get; set; }
+ ///
+ /// 变量经过转换或格式化后的显示值。
+ ///
+ public string DisplayValue { get; set; } = String.Empty;
+
///
/// 指示是否需要对变量进行报警监测。
///
diff --git a/Models/VariableTable.cs b/Models/VariableTable.cs
index 29e12d1..ffb6e15 100644
--- a/Models/VariableTable.cs
+++ b/Models/VariableTable.cs
@@ -1,4 +1,6 @@
-using CommunityToolkit.Mvvm.ComponentModel;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using CommunityToolkit.Mvvm.ComponentModel;
using PMSWPF.Enums;
namespace PMSWPF.Models;
@@ -27,7 +29,17 @@ public partial class VariableTable : ObservableObject
///
/// 变量表中包含的数据变量列表。
///
- public List DataVariables { get; set; }
+ [ObservableProperty]
+ public List dataVariables;
+ // [ObservableProperty]
+ // public ObservableCollection varDataList;
+ //
+ // // 列表改变了的事件
+ // // public event Action> OnDataVariableListChanged;
+ // partial void OnDataVariablesChanged(List variableDatas)
+ // {
+ // VarDataList=new ObservableCollection(variableDatas);
+ // }
///
/// 变量表的唯一标识符。
diff --git a/ViewModels/MainViewModel.cs b/ViewModels/MainViewModel.cs
index 206e4a1..e3352b9 100644
--- a/ViewModels/MainViewModel.cs
+++ b/ViewModels/MainViewModel.cs
@@ -12,21 +12,37 @@ using PMSWPF.Services;
namespace PMSWPF.ViewModels;
+///
+/// 主视图模型,负责应用程序的主导航和数据管理。
+///
public partial class MainViewModel : ViewModelBase
{
- private readonly NavgatorServices _navgatorServices;
private readonly DataServices _dataServices;
private readonly IDialogService _dialogService;
private readonly ILogger _logger;
-
-
- [ObservableProperty] private ViewModelBase currentViewModel;
- [ObservableProperty] private ObservableCollection _menus;
-
private readonly MenuRepository _menuRepository;
+ private readonly NavgatorServices _navgatorServices;
private readonly VarTableRepository _varTableRepository;
+ ///
+ /// 当前显示的视图模型。
+ ///
+ [ObservableProperty]
+ private ViewModelBase currentViewModel;
+ ///
+ /// 应用程序的菜单列表。
+ ///
+ [ObservableProperty]
+ private ObservableCollection _menus;
+
+ ///
+ /// 初始化 类的新实例。
+ ///
+ /// 导航服务。
+ /// 数据服务。
+ /// 对话框服务。
+ /// 日志记录器。
public MainViewModel(NavgatorServices navgatorServices, DataServices dataServices, IDialogService dialogService,
ILogger logger)
{
@@ -35,7 +51,7 @@ public partial class MainViewModel : ViewModelBase
_dialogService = dialogService;
_logger = logger;
_varTableRepository = new VarTableRepository();
- _menuRepository= new MenuRepository();
+ _menuRepository = new MenuRepository();
_navgatorServices.OnViewModelChanged += () => { CurrentViewModel = _navgatorServices.CurrentViewModel; };
@@ -48,63 +64,9 @@ public partial class MainViewModel : ViewModelBase
}
///
- /// 菜单点击切换
+ /// 添加变量表。
///
- ///
- public async Task MenuSelectionChanged(MenuBean menu)
- {
- try
- {
- switch (menu.Type)
- {
- case MenuType.MainMenu:
- menu.ViewModel = DataServicesHelper.GetMainViewModel(menu.Name);
- break;
- case MenuType.DeviceMenu:
- menu.ViewModel = App.Current.Services.GetRequiredService();
- menu.Data = _dataServices.Devices.FirstOrDefault(d => d.Id == menu.DataId);
- break;
- case MenuType.VariableTableMenu:
-
- VariableTableViewModel varTableVM =
- App.Current.Services.GetRequiredService();
- varTableVM.VariableTable =
- DataServicesHelper.FindVarTableForDevice(_dataServices.Devices, menu.DataId);
-
- varTableVM.IsLoadCompletion = false;
- menu.ViewModel = varTableVM;
- menu.Data = varTableVM.VariableTable;
-
- break;
- case MenuType.AddVariableTableMenu:
-
- await AddVariableTable(menu);
- break;
- }
-
- if (menu.Type == MenuType.AddVariableTableMenu)
- return;
-
- if (menu.ViewModel != null)
- {
- MessageHelper.SendNavgatorMessage(menu.ViewModel);
- _logger.LogInformation($"导航到:{menu.Name}");
- }
- else
- {
- NotificationHelper.ShowMessage($"菜单:{menu.Name},没有对应的ViewModel.");
- _logger.LogInformation($"菜单:{menu.Name},没有对应的ViewModel.");
- }
- }
- catch (Exception e)
- {
- _logger.LogError($"菜单切换是出现了错误:{e}");
- NotificationHelper.ShowMessage($"菜单切换是出现了错误:{e.Message}", NotificationType.Error);
- }
- }
-
-
-
+ /// 当前菜单项,用于获取父级设备信息。
private async Task AddVariableTable(MenuBean menu)
{
try
@@ -116,7 +78,7 @@ public partial class MainViewModel : ViewModelBase
NotificationHelper.ShowMessage("操作失败:无法获取有效的设备信息。", NotificationType.Error);
return;
}
-
+
// 2. 显示添加变量表对话框
var varTable = await _dialogService.ShowAddVarTableDialog();
@@ -177,4 +139,60 @@ public partial class MainViewModel : ViewModelBase
NotificationHelper.ShowMessage($"添加变量表时出现了错误:{e.Message}", NotificationType.Error);
}
}
+
+ ///
+ /// 处理菜单选择变化的逻辑。
+ ///
+ /// 被选中的菜单项。
+ public async Task MenuSelectionChanged(MenuBean menu)
+ {
+ try
+ {
+ switch (menu.Type)
+ {
+ case MenuType.MainMenu:
+ menu.ViewModel = DataServicesHelper.GetMainViewModel(menu.Name);
+ break;
+ case MenuType.DeviceMenu:
+ menu.ViewModel = App.Current.Services.GetRequiredService();
+ menu.Data = _dataServices.Devices.FirstOrDefault(d => d.Id == menu.DataId);
+ break;
+ case MenuType.VariableTableMenu:
+
+ VariableTableViewModel varTableVM =
+ App.Current.Services.GetRequiredService();
+ varTableVM.VariableTable =
+ DataServicesHelper.FindVarTableForDevice(_dataServices.Devices, menu.DataId);
+
+ varTableVM.IsLoadCompletion = false;
+ menu.ViewModel = varTableVM;
+ menu.Data = varTableVM.VariableTable;
+
+ break;
+ case MenuType.AddVariableTableMenu:
+
+ await AddVariableTable(menu);
+ break;
+ }
+
+ if (menu.Type == MenuType.AddVariableTableMenu)
+ return;
+
+ if (menu.ViewModel != null)
+ {
+ MessageHelper.SendNavgatorMessage(menu.ViewModel);
+ _logger.LogInformation($"导航到:{menu.Name}");
+ }
+ else
+ {
+ NotificationHelper.ShowMessage($"菜单:{menu.Name},没有对应的ViewModel.");
+ _logger.LogInformation($"菜单:{menu.Name},没有对应的ViewModel.");
+ }
+ }
+ catch (Exception e)
+ {
+ _logger.LogError($"菜单切换是出现了错误:{e}");
+ NotificationHelper.ShowMessage($"菜单切换是出现了错误:{e.Message}", NotificationType.Error);
+ }
+ }
}
\ No newline at end of file
diff --git a/ViewModels/VariableTableViewModel.cs b/ViewModels/VariableTableViewModel.cs
index 0c90047..775c3ab 100644
--- a/ViewModels/VariableTableViewModel.cs
+++ b/ViewModels/VariableTableViewModel.cs
@@ -13,7 +13,6 @@ namespace PMSWPF.ViewModels;
partial class VariableTableViewModel : ViewModelBase
{
-
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private readonly IDialogService _dialogService;
@@ -50,6 +49,7 @@ partial class VariableTableViewModel : ViewModelBase
DataVariables = new ObservableCollection(VariableTable.DataVariables);
}
+
IsLoadCompletion = true;
}
@@ -62,13 +62,12 @@ partial class VariableTableViewModel : ViewModelBase
var varData = await _dialogService.ShowAddVarDataDialog();
// // 如果用户取消或对话框未返回设备,则直接返回
if (varData == null)
- {
- // _logger.LogInformation("用户取消了添加设备操作。");
return;
- }
varData.VariableTableId = variableTable.Id;
var addVarData = await _varDataRepository.AddAsync(varData);
+ DataVariables?.Add(addVarData);
+ variableTable.DataVariables?.Add(addVarData);
var msg = addVarData.Id > 0 ? $"添加变量成功:{varData?.Name}" : $"添加变量成功:{varData.Name}";
var type = addVarData.Id > 0 ? NotificationType.Success : NotificationType.Error;
NotificationHelper.ShowMessage(msg, type);
@@ -78,7 +77,6 @@ partial class VariableTableViewModel : ViewModelBase
string msg = $"添加变量的过程中发生了不可预期的错误:";
Logger.Error(msg + e);
NotificationHelper.ShowMessage(msg + e.Message, NotificationType.Error);
-
}
}
diff --git a/Views/VariableTableView.xaml b/Views/VariableTableView.xaml
index c70817f..78333d0 100644
--- a/Views/VariableTableView.xaml
+++ b/Views/VariableTableView.xaml
@@ -45,8 +45,7 @@
-
@@ -76,12 +75,11 @@
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file