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