From 3888addfa1ba02cbae75eba9141eff3b4d824d35 Mon Sep 17 00:00:00 2001 From: "David P.G" Date: Fri, 4 Jul 2025 14:15:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=AF=B9=E8=AF=9D=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Services/DialogService.cs | 13 ++++++- Services/IDialogService.cs | 4 ++- .../Dialogs/ProcessingDialogViewModel.cs | 9 +++++ ViewModels/VariableTableViewModel.cs | 7 ++-- Views/Dialogs/ProcessingDialog.xaml | 34 +++++++++++++++++++ Views/Dialogs/ProcessingDialog.xaml.cs | 13 +++++++ 6 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 ViewModels/Dialogs/ProcessingDialogViewModel.cs create mode 100644 Views/Dialogs/ProcessingDialog.xaml create mode 100644 Views/Dialogs/ProcessingDialog.xaml.cs diff --git a/Services/DialogService.cs b/Services/DialogService.cs index 37a23f7..2bd03e3 100644 --- a/Services/DialogService.cs +++ b/Services/DialogService.cs @@ -1,4 +1,5 @@ -using iNKORE.UI.WPF.Modern.Controls; +using HandyControl.Tools.Extension; +using iNKORE.UI.WPF.Modern.Controls; using NPOI.SS.Formula.Functions; using PMSWPF.Models; using PMSWPF.ViewModels.Dialogs; @@ -119,4 +120,14 @@ public class DialogService :IDialogService } return null; } + + public ContentDialog ShowProcessingDialog(string title, string message) + { + ProcessingDialogViewModel vm = new ProcessingDialogViewModel(); + vm.Title = title; + vm.Message = message; + var dialog = new ProcessingDialog(vm); + _ = dialog.ShowAsync(); // 不await,让它在后台显示 + return dialog; + } } \ No newline at end of file diff --git a/Services/IDialogService.cs b/Services/IDialogService.cs index 7a6da34..836651f 100644 --- a/Services/IDialogService.cs +++ b/Services/IDialogService.cs @@ -1,4 +1,5 @@ -using PMSWPF.Models; +using iNKORE.UI.WPF.Modern.Controls; +using PMSWPF.Models; namespace PMSWPF.Services; @@ -16,4 +17,5 @@ public interface IDialogService void ShowMessageDialog(string title, string message); Task ShowEditVarDataDialog(VariableData variableData); Task ShowImportExcelDialog(); + ContentDialog ShowProcessingDialog(string title, string message); } \ No newline at end of file diff --git a/ViewModels/Dialogs/ProcessingDialogViewModel.cs b/ViewModels/Dialogs/ProcessingDialogViewModel.cs new file mode 100644 index 0000000..19989a2 --- /dev/null +++ b/ViewModels/Dialogs/ProcessingDialogViewModel.cs @@ -0,0 +1,9 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +namespace PMSWPF.ViewModels.Dialogs; + +public partial class ProcessingDialogViewModel : ObservableObject +{ + [ObservableProperty] private string _title; + [ObservableProperty] private string _message; +} diff --git a/ViewModels/VariableTableViewModel.cs b/ViewModels/VariableTableViewModel.cs index b15c521..8861b6d 100644 --- a/ViewModels/VariableTableViewModel.cs +++ b/ViewModels/VariableTableViewModel.cs @@ -1,6 +1,7 @@ using System.Collections.ObjectModel; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using iNKORE.UI.WPF.Modern.Controls; using Newtonsoft.Json; using NLog; using PMSWPF.Data.Repositories; @@ -142,6 +143,7 @@ partial class VariableTableViewModel : ViewModelBase [RelayCommand] private async void ImprotFromTiaVarTable() { + ContentDialog processingDialog = null; try { // 让用户选择导入的Excel文件 @@ -152,7 +154,8 @@ partial class VariableTableViewModel : ViewModelBase var importVarDataList = ExcelHelper.ImprotFromTiaVariableTable(filePath); if (importVarDataList.Count == 0) return; - + processingDialog= _dialogService.ShowProcessingDialog("正在处理...", "正在导入变量,请稍等片刻...."); + foreach (var variableData in importVarDataList) { variableData.CreateTime=DateTime.Now; @@ -167,7 +170,7 @@ partial class VariableTableViewModel : ViewModelBase variableTable.DataVariables.Add(variableData); } DataVariables=new ObservableCollection(resVarDataList); - + processingDialog?.Hide(); string msgSuccess = $"成功导入变量:{resVarDataList.Count}个。"; Logger.Info(msgSuccess); NotificationHelper.ShowMessage(msgSuccess, NotificationType.Success); diff --git a/Views/Dialogs/ProcessingDialog.xaml b/Views/Dialogs/ProcessingDialog.xaml new file mode 100644 index 0000000..0517faf --- /dev/null +++ b/Views/Dialogs/ProcessingDialog.xaml @@ -0,0 +1,34 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Views/Dialogs/ProcessingDialog.xaml.cs b/Views/Dialogs/ProcessingDialog.xaml.cs new file mode 100644 index 0000000..c6c4f04 --- /dev/null +++ b/Views/Dialogs/ProcessingDialog.xaml.cs @@ -0,0 +1,13 @@ +using iNKORE.UI.WPF.Modern.Controls; +using PMSWPF.ViewModels.Dialogs; + +namespace PMSWPF.Views.Dialogs; + +public partial class ProcessingDialog : ContentDialog +{ + public ProcessingDialog(ProcessingDialogViewModel viewModel) + { + InitializeComponent(); + this.DataContext = viewModel; + } +} \ No newline at end of file