完成变量列表的变量显示
This commit is contained in:
@@ -12,21 +12,37 @@ using PMSWPF.Services;
|
||||
|
||||
namespace PMSWPF.ViewModels;
|
||||
|
||||
/// <summary>
|
||||
/// 主视图模型,负责应用程序的主导航和数据管理。
|
||||
/// </summary>
|
||||
public partial class MainViewModel : ViewModelBase
|
||||
{
|
||||
private readonly NavgatorServices _navgatorServices;
|
||||
private readonly DataServices _dataServices;
|
||||
private readonly IDialogService _dialogService;
|
||||
private readonly ILogger<MainViewModel> _logger;
|
||||
|
||||
|
||||
[ObservableProperty] private ViewModelBase currentViewModel;
|
||||
[ObservableProperty] private ObservableCollection<MenuBean> _menus;
|
||||
|
||||
private readonly MenuRepository _menuRepository;
|
||||
private readonly NavgatorServices _navgatorServices;
|
||||
private readonly VarTableRepository _varTableRepository;
|
||||
|
||||
/// <summary>
|
||||
/// 当前显示的视图模型。
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
private ViewModelBase currentViewModel;
|
||||
|
||||
/// <summary>
|
||||
/// 应用程序的菜单列表。
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
private ObservableCollection<MenuBean> _menus;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化 <see cref="MainViewModel"/> 类的新实例。
|
||||
/// </summary>
|
||||
/// <param name="navgatorServices">导航服务。</param>
|
||||
/// <param name="dataServices">数据服务。</param>
|
||||
/// <param name="dialogService">对话框服务。</param>
|
||||
/// <param name="logger">日志记录器。</param>
|
||||
public MainViewModel(NavgatorServices navgatorServices, DataServices dataServices, IDialogService dialogService,
|
||||
ILogger<MainViewModel> 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
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 菜单点击切换
|
||||
/// 添加变量表。
|
||||
/// </summary>
|
||||
/// <param name="menu"></param>
|
||||
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<DeviceDetailViewModel>();
|
||||
menu.Data = _dataServices.Devices.FirstOrDefault(d => d.Id == menu.DataId);
|
||||
break;
|
||||
case MenuType.VariableTableMenu:
|
||||
|
||||
VariableTableViewModel varTableVM =
|
||||
App.Current.Services.GetRequiredService<VariableTableViewModel>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <param name="menu">当前菜单项,用于获取父级设备信息。</param>
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理菜单选择变化的逻辑。
|
||||
/// </summary>
|
||||
/// <param name="menu">被选中的菜单项。</param>
|
||||
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<DeviceDetailViewModel>();
|
||||
menu.Data = _dataServices.Devices.FirstOrDefault(d => d.Id == menu.DataId);
|
||||
break;
|
||||
case MenuType.VariableTableMenu:
|
||||
|
||||
VariableTableViewModel varTableVM =
|
||||
App.Current.Services.GetRequiredService<VariableTableViewModel>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<VariableData>(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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user