完成设备详情页的变量表的编辑和删除

This commit is contained in:
2025-07-30 13:21:03 +08:00
parent a62ee03933
commit d4fb542770
2 changed files with 103 additions and 103 deletions

View File

@@ -177,7 +177,6 @@ public partial class DataServices : ObservableRecipient, IRecipient<LoadMessage>
// 注意MenuItemViewModel 的属性是 ObservableProperty直接赋值会触发通知
if (existingItem.Header != newDto.Header) existingItem.Header = newDto.Header;
if (existingItem.Icon != newDto.Icon) existingItem.Icon = newDto.Icon;
}
else
{
@@ -484,7 +483,7 @@ public partial class DataServices : ObservableRecipient, IRecipient<LoadMessage>
{
if (variableTableItemViewModel == null)
return;
var device = Devices.FirstOrDefault(d => d.Id == variableTableItemViewModel.DeviceId);
if (device != null)
{
@@ -523,11 +522,13 @@ public partial class DataServices : ObservableRecipient, IRecipient<LoadMessage>
if (device != null)
{
// 1. 删除与设备关联的所有变量表及其变量
var variableTablesToDelete = VariableTables.Where(vt => vt.DeviceId == device.Id).ToList();
var variableTablesToDelete = VariableTables.Where(vt => vt.DeviceId == device.Id)
.ToList();
foreach (var vt in variableTablesToDelete)
{
// 删除与当前变量表关联的所有变量
var variablesToDelete = Variables.Where(v => v.VariableTableId == vt.Id).ToList();
var variablesToDelete = Variables.Where(v => v.VariableTableId == vt.Id)
.ToList();
foreach (var variable in variablesToDelete)
{
Variables.Remove(variable);
@@ -537,7 +538,8 @@ public partial class DataServices : ObservableRecipient, IRecipient<LoadMessage>
VariableTables.Remove(vt);
// 删除与变量表关联的菜单项
var variableTableMenu = Menus.FirstOrDefault(m => m.TargetViewKey == "VariableTableView" && m.Header == vt.Name);
var variableTableMenu
= Menus.FirstOrDefault(m => m.TargetViewKey == "VariableTableView" && m.Header == vt.Name);
if (variableTableMenu != null)
{
DeleteMenuItem(variableTableMenu);
@@ -558,4 +560,34 @@ public partial class DataServices : ObservableRecipient, IRecipient<LoadMessage>
// BuildMenuTree();
}
}
public void DeleteVariableTableById(int id)
{
var variableTable = VariableTables.FirstOrDefault(vt => vt.Id == id);
if (variableTable != null)
{
// 删除与当前变量表关联的所有变量
var variablesToDelete = Variables.Where(v => v.VariableTableId == variableTable.Id)
.ToList();
foreach (var variable in variablesToDelete)
{
Variables.Remove(variable);
}
var device = Devices.FirstOrDefault(d => d.Id == variableTable.DeviceId);
if (device != null)
device.VariableTables.Remove(variableTable);
// 删除变量表
VariableTables.Remove(variableTable);
// 删除与变量表关联的菜单项
var variableTableMenu
= Menus.FirstOrDefault(m => m.MenuType == MenuType.VariableTableMenu && m.TargetId == variableTable.Id);
if (variableTableMenu != null)
{
DeleteMenuItem(variableTableMenu);
}
}
}
}