feat.新添加设备的删除变量表界面不更新的问题。

This commit is contained in:
2025-10-03 23:31:04 +08:00
parent f86a2abed6
commit 24e4259e31
2 changed files with 24 additions and 12 deletions

View File

@@ -81,13 +81,10 @@ public partial class DeviceDetailViewModel : ViewModelBase
if (addVarTableId > 0)
{
variableTableItemViewModel.Id = addVarTableId;
if (_dataStorageService.Devices.TryGetValue(variableTableItemViewModel.DeviceId, out var device))
{
variableTableItemViewModel.Device = device;
}
_notificationService.ShowSuccess($"添加变量表成功:{variableTableItemViewModel.Name}");
variableTableItemViewModel.Device = CurrentDevice;
CurrentDevice.VariableTables.Add(variableTableItemViewModel);
_dataStorageService.VariableTables.Add(variableTableItemViewModel.Id, variableTableItemViewModel);
_notificationService.ShowSuccess($"添加变量表成功:{variableTableItemViewModel.Name}");
}
else
{
@@ -170,6 +167,15 @@ public partial class DeviceDetailViewModel : ViewModelBase
var tableName = SelectedVariableTable.Name;
if (await _wpfDataService.VariableDataService.DeleteVariableTable(SelectedVariableTable, true))
{
if (SelectedVariableTable.Device != null)
{
if (_dataStorageService.Devices.TryGetValue(SelectedVariableTable.DeviceId ,out var device))
{
device.VariableTables.Remove(SelectedVariableTable);
}
_dataStorageService.VariableTables.Remove(SelectedVariableTable.Id);
SelectedVariableTable.Device.VariableTables.Remove(SelectedVariableTable);
}
_notificationService.ShowSuccess($"变量表:{tableName},删除成功。");
}
else
@@ -189,7 +195,6 @@ public partial class DeviceDetailViewModel : ViewModelBase
}
public override async Task OnNavigatedToAsync(NavigationParameter parameter)
{
if (_dataStorageService.Devices.TryGetValue(parameter.TargetId, out var device))
@@ -221,11 +226,12 @@ public partial class DeviceDetailViewModel : ViewModelBase
{
// 导航到设备列表页面
var navigationService = App.Current.Services.GetRequiredService<INavigationService>();
await navigationService.NavigateToAsync(this, new NavigationParameter(nameof(DevicesViewModel), 0, NavigationType.Device));
await navigationService.NavigateToAsync(
this, new NavigationParameter(nameof(DevicesViewModel), 0, NavigationType.Device));
}
catch (Exception ex)
{
_notificationService.ShowError($"导航到设备列表失败: {ex.Message}", ex);
}
}
}
}

View File

@@ -282,10 +282,10 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
if (_dataStorageService.Devices.TryGetValue(variableTableItemViewModel.DeviceId, out var deviceModel))
{
variableTableItemViewModel.Device = deviceModel;
deviceModel.VariableTables.Add(variableTableItemViewModel);
_dataStorageService.VariableTables.Add(variableTableItemViewModel.Id, variableTableItemViewModel);
}
_notificationService.ShowSuccess($"添加变量表成功:{variableTableItemViewModel.Name}");
device.VariableTables.Add(variableTableItemViewModel);
}
else
{
@@ -362,8 +362,14 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable
if (await _wpfDataService.VariableDataService.DeleteVariableTable(variableTable, true))
{
// Remove from parent device's collection
if (variableTable.Device != null && variableTable.Device.VariableTables.Contains(variableTable))
if (variableTable.Device != null)
{
if (_dataStorageService.Devices.TryGetValue(variableTable.DeviceId ,out var device))
{
device.VariableTables.Remove(variableTable);
}
_dataStorageService.VariableTables.Remove(variableTable.Id);
variableTable.Device.VariableTables.Remove(variableTable);
}
_notificationService.ShowSuccess($"变量表:{tableName},删除成功。");