From 33fd86db411a30ebe20e9782a1e68958086940a6 Mon Sep 17 00:00:00 2001 From: "David P.G" Date: Thu, 3 Jul 2025 15:29:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8D=95=E4=B8=AA=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Services/DialogService.cs | 14 ++++++++++++ Services/IDialogService.cs | 1 + ViewModels/VariableTableViewModel.cs | 33 ++++++++++++++++++++++++++++ Views/VariableTableView.xaml | 6 +++-- 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/Services/DialogService.cs b/Services/DialogService.cs index 38ce135..636f0f4 100644 --- a/Services/DialogService.cs +++ b/Services/DialogService.cs @@ -93,4 +93,18 @@ public class DialogService :IDialogService MessageBox.Show(message); } + public async Task ShowEditVarDataDialog(VariableData variableData) + { + VarDataDialogViewModel vm = new(); + vm.Title = "编辑变量"; + vm.PrimaryButtonText = "编辑变量"; + vm.VariableData = variableData; + var dialog = new VarDataDialog(vm); + var res = await dialog.ShowAsync(); + if (res == ContentDialogResult.Primary) + { + return vm.VariableData; + } + return null; + } } \ No newline at end of file diff --git a/Services/IDialogService.cs b/Services/IDialogService.cs index c352a0c..ea2581f 100644 --- a/Services/IDialogService.cs +++ b/Services/IDialogService.cs @@ -14,4 +14,5 @@ public interface IDialogService Task ShowAddVarDataDialog(); void ShowMessageDialog(string title, string message); + Task ShowEditVarDataDialog(VariableData variableData); } \ No newline at end of file diff --git a/ViewModels/VariableTableViewModel.cs b/ViewModels/VariableTableViewModel.cs index 775c3ab..e400528 100644 --- a/ViewModels/VariableTableViewModel.cs +++ b/ViewModels/VariableTableViewModel.cs @@ -23,6 +23,9 @@ partial class VariableTableViewModel : ViewModelBase [ObservableProperty] private ObservableCollection _dataVariables; + [ObservableProperty] + private VariableData _selectedVariableData; + /// /// 是否是第一次加载,防止ToggleSwitch第一次加载触发改变事件 /// @@ -53,6 +56,36 @@ partial class VariableTableViewModel : ViewModelBase IsLoadCompletion = true; } + [RelayCommand] + public async void EditVarData(VariableTable variableTable) + { + try + { + // // 1. 显示添加设备对话框 + var varData = await _dialogService.ShowEditVarDataDialog(SelectedVariableData); + // // 如果用户取消或对话框未返回设备,则直接返回 + if (varData == null) + return; + + varData.VariableTableId = variableTable.Id; + // 更新数据库 + await _varDataRepository.UpdateAsync(varData); + // 更新当前页面的 + var index = variableTable.DataVariables.IndexOf(SelectedVariableData); + // 更新变量表中的 + if (index >= 0 && index < variableTable.DataVariables.Count) + variableTable.DataVariables[index] = varData; + NotificationHelper.ShowMessage($"编辑变量成功:{varData?.Name}", NotificationType.Success); + } + catch (Exception e) + { + string msg = $"编辑变量的过程中发生了不可预期的错误:"; + Logger.Error(msg + e); + NotificationHelper.ShowMessage(msg + e.Message, NotificationType.Error); + } + } + + [RelayCommand] public async void AddVarData(VariableTable variableTable) { diff --git a/Views/VariableTableView.xaml b/Views/VariableTableView.xaml index 78333d0..e6d0d79 100644 --- a/Views/VariableTableView.xaml +++ b/Views/VariableTableView.xaml @@ -52,8 +52,9 @@ - + @@ -102,6 +103,7 @@