From 86dc3b670ac0a8bff842df501c70ee27490cbe10 Mon Sep 17 00:00:00 2001 From: "David P.G" Date: Sat, 26 Jul 2025 12:19:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=98=BE=E7=A4=BA=E4=B8=BB?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DMS.WPF/Assets/AppIcon2.ico | Bin 0 -> 67646 bytes DMS.WPF/DMS.WPF.csproj | 1 + DMS.WPF/Services/INavigationService.cs | 4 ---- DMS.WPF/Services/NavigationService.cs | 15 +-------------- DMS.WPF/ViewModels/MainViewModel.cs | 11 +++-------- DMS.WPF/ViewModels/SplashViewModel.cs | 15 ++++++++++----- DMS.WPF/Views/MainView.xaml | 2 +- DMS.WPF/Views/MainView.xaml.cs | 4 +--- DMS.WPF/Views/SplashWindow.xaml | 2 +- 9 files changed, 18 insertions(+), 36 deletions(-) create mode 100644 DMS.WPF/Assets/AppIcon2.ico diff --git a/DMS.WPF/Assets/AppIcon2.ico b/DMS.WPF/Assets/AppIcon2.ico new file mode 100644 index 0000000000000000000000000000000000000000..6c7fb71e62bdc16cc8bdb55d3dfb38d08b841e45 GIT binary patch literal 67646 zcmeI4e{2**6vr3Aw0|fNV+cX9hIo}|sVLAGOstryNCZTrSLCPQFN6eRv=%59#nc!A z4N?3VKthUEdWsbO0Fqu~ORG{!OjLRY3IP!nw5Tyqu|D72_1wMXW^VU(_jWt`w)x)8 z+u6OlozJ{CzqYF={qS$qDg|G!S4QUcQ-&ytG7^Qm*v{B~mW&zkgrV19F;oQa06Jl2J^ zwc-4Mrpk@@3*!X(zbpLF&kK?LcUtD!w2r;DE_}Bw94Itg2Z+Dt_@lp%t?w-D((=}) z1^lrt1iCPPtf4wU{5{1VeSRqNKdtAjx5fOiZDcPe{A!MQn608&j|ncF@Yjs9gxuf%N~Ua6xgAM#{AMfb@(x`L;E*< zUDI>qP&rR~Ba6eSSf|=&l>g4AJHuVA4dpzA4j!l(aTLdFHt5=eaPg`J0GpKY_;2Q` zP=NwF6r5=-erV?)j)e~cvQMdhj&wjnWPZ{ZFBSL1KBN4%hi`@7T6aQMTSH2H)zJi# zy1*8VK4H&1LhoFJulWBFZ8XfD)d8dY*>R`#Z%)ac)d}J+juYAP|DU2e9OHkqrH1%t z*dAny|Bum-WBj8nYly$c`JajIa*Y46{cjL|kMlntZFP+QFRgXN-{bt*xL{voiQzh6 zwEx%8RLo^h{l825er1bsyjP-X@~|T?v47kDnsNID;e4TXyr)mESor7oi_wn3Jne|g zu1t*Y(!CqyUl%T@JlD2sFi%TQ{W?C=@!y0q0GD^D8rTSM{rjq}+-qq(=*sx7Y*F%f zUqAn6g@5T?xYjP%kon+HnsuK zHmz!N8ij)ko$HKdzP1ue{DFhePhdw>?4I6 z@%I*g1}hXT&Bgn@J{8pgA^*le1Frq%3c>eg5`XXUXK3m>%LdeU24BKD(4DFtaQI)u zHQ&|Snr;|iggrZk_%e(!J<#!I_kz}<&)<|d&*(ex*YSTI`~P!P zO}p(Um@@3>|0=!X?~KQPM*4p|Za6>Gd@8yfzKw2xLyKWgE_p@f zLI3Z;|4E_}_8@dN}v| zWQ~1{e>DujIp9J&6bwQE@-Ea0*YR#(-;>SFsrmo=&p|G(;}+T>NOL8wJiLYBL04) zu3j_oSIfeWDdO)(>gqKUf3+<9m?Hjuq^@2w@mI^jk168sN9yV|6MwZV(xo<6l*~po z%cLD^=Kj9B<}pa$uul^#FHXas7(9u&inwS8p$$#y!_;d-Y7|Xpmg4#Q&BL ztD*bs4_wt%mvR}dUReoKt50&Ze#Lz5xn}v#f8b`2T*P0{{!7lD)otQW`~|%{ewLN~ zAH{#qv@7KQTX1vwa#>HmNF{{IJ&|C9d){E3a=wR)bJ)Ejvfm$5JZ3mZu8iA%;x9$rApU}TJSF#i7TbtF@fSDr zoLq|k6#uFJ*XQd%#_|7&2S=4ZIjs<6*1fmqfy^o?%6pCz-qY@;`5%AJ{}6xTk9B~1 zpQa3XlCS;J{U2%SFY)Jh11SDe{Ffodi>`tEpZs6)I*{@BpW;8oe^Km|Ay0DOr~W_n z|0(_p>Hzt_GyT7px2%Sl(eJr>^A-N{pZ2`_Ec|@9jjQ_CX4y6;_4w3LAh!x!@&6Td z>tRwCaJ8ZO5iY~>%=g@_&Js^RvkRJ>$bx`VX%7fAxFIVL|)nT)p-3bZ-BD_lCvr{g=DB`smd% z?zv{?Bp2cRZ8GbrX@#!vH_O4T<7xiKnfUJ(PqW`k{E5Hhb%5f(p#Lv9ds_b!uxD)r z@u&DNc^#nmFNgt>v#0nkU{CR%ANyGjmJdDui=O{w+gzL3v3WL*r})p00p$Pk-~S5? ze-2#8gX1g(y>?UoWP4S=WE+pv9{;bRRB7#h6s1^T_rIVhc})s#@$X})_?8_zC(ZB6 z(O-|=#!^bUe$bcC@toxRbA!BW4}#?1mzS{n#d#Db?EZ1PDq-iuZAjRIVm6-D`+0dW z8_(*si(@vP)oWM9Y&@&ihM0|K#cli`Rv(KKHhvJZs}eST5VP?$ems6q?}m2LCa)d$ go5X9ZJQ7B%Xfy`dF2x&_0r64Gf~BZDTrQ9Q08P{;{{R30 literal 0 HcmV?d00001 diff --git a/DMS.WPF/DMS.WPF.csproj b/DMS.WPF/DMS.WPF.csproj index db2515a..799a214 100644 --- a/DMS.WPF/DMS.WPF.csproj +++ b/DMS.WPF/DMS.WPF.csproj @@ -10,6 +10,7 @@ + diff --git a/DMS.WPF/Services/INavigationService.cs b/DMS.WPF/Services/INavigationService.cs index 2ca3a07..4b9f65f 100644 --- a/DMS.WPF/Services/INavigationService.cs +++ b/DMS.WPF/Services/INavigationService.cs @@ -15,8 +15,4 @@ public interface INavigationService /// 要传递给目标ViewModel的参数。 Task NavigateToAsync(string viewKey, object parameter = null); - /// - /// 显示主窗口。 - /// - Task ShowMainWindowAsync(); } diff --git a/DMS.WPF/Services/NavigationService.cs b/DMS.WPF/Services/NavigationService.cs index cca5932..efee813 100644 --- a/DMS.WPF/Services/NavigationService.cs +++ b/DMS.WPF/Services/NavigationService.cs @@ -48,20 +48,7 @@ public class NavigationService : INavigationService mainViewModel.CurrentViewModel = viewModel; } - /// - /// 显示主窗口。 - /// - public Task ShowMainWindowAsync() - { - return App.Current.Dispatcher.InvokeAsync(() => - { - var mainView = _serviceProvider.GetRequiredService(); - // 将 MainView 设置为新的主窗口 - App.Current.MainWindow = mainView; - mainView.Show(); - }) - .Task; - } + private Type GetViewModelTypeByKey(string key) { diff --git a/DMS.WPF/ViewModels/MainViewModel.cs b/DMS.WPF/ViewModels/MainViewModel.cs index e6a7ace..ab8b477 100644 --- a/DMS.WPF/ViewModels/MainViewModel.cs +++ b/DMS.WPF/ViewModels/MainViewModel.cs @@ -28,7 +28,6 @@ public partial class MainViewModel : ViewModelBase private readonly DataServices _dataServices; private readonly IDialogService _dialogService; private readonly ILogger _logger; - private readonly NavgatorServices _navgatorServices; /// /// 当前显示的视图模型。 @@ -49,22 +48,18 @@ public partial class MainViewModel : ViewModelBase /// 数据服务。 /// 对话框服务。 /// 日志记录器。 - public MainViewModel(NavgatorServices navgatorServices, DataServices dataServices, IDialogService dialogService, + public MainViewModel( ILogger logger) { - _navgatorServices = navgatorServices; - _dataServices = dataServices; - _dialogService = dialogService; + // _dataServices = dataServices; _logger = logger; - _navgatorServices.OnViewModelChanged += () => { CurrentViewModel = _navgatorServices.CurrentViewModel; }; - CurrentViewModel = new HomeViewModel(); CurrentViewModel.OnLoaded(); // 发送消息加载数据 MessageHelper.SendLoadMessage(LoadTypes.All); // 当菜单加载成功后,在前台显示菜单 - dataServices.OnMenuTreeListChanged += (menus) => { Menus = new ObservableCollection(menus); }; + // dataServices.OnMenuTreeListChanged += (menus) => { Menus = new ObservableCollection(menus); }; } /// diff --git a/DMS.WPF/ViewModels/SplashViewModel.cs b/DMS.WPF/ViewModels/SplashViewModel.cs index 4e74e13..343179a 100644 --- a/DMS.WPF/ViewModels/SplashViewModel.cs +++ b/DMS.WPF/ViewModels/SplashViewModel.cs @@ -6,6 +6,8 @@ using DMS.WPF.Services; using System; using System.Threading.Tasks; using DMS.Application.Services; +using DMS.WPF.Views; +using Microsoft.Extensions.DependencyInjection; namespace DMS.WPF.ViewModels; @@ -38,24 +40,27 @@ public partial class SplashViewModel : ObservableObject LoadingMessage = "正在加载系统配置..."; // 可以在这里添加加载配置的逻辑 - await Task.Delay(1500); // 模拟耗时 + await Task.Delay(500); // 模拟耗时 LoadingMessage = "正在连接后台服务..."; // 可以在这里添加连接服务的逻辑 - await Task.Delay(1500); // 模拟耗时 + await Task.Delay(500); // 模拟耗时 LoadingMessage = "加载完成,正在启动主界面..."; - await Task.Delay(1500); + await Task.Delay(500); // 初始化完成,显示主窗口 - var navigationService = (INavigationService)_serviceProvider.GetService(typeof(INavigationService)); - await navigationService.ShowMainWindowAsync(); + var mainView = App.Current.Services.GetRequiredService(); + // 将 MainView 设置为新的主窗口 + App.Current.MainWindow = mainView; + mainView.Show(); return true; } catch (Exception ex) { // 处理初始化过程中的异常 LoadingMessage = $"初始化失败: {ex.Message}"; + Console.WriteLine($"初始化失败: {ex.Message}"); // 在此可以记录日志或显示错误对话框 return false; } diff --git a/DMS.WPF/Views/MainView.xaml b/DMS.WPF/Views/MainView.xaml index e188290..bb281cd 100644 --- a/DMS.WPF/Views/MainView.xaml +++ b/DMS.WPF/Views/MainView.xaml @@ -42,7 +42,7 @@ diff --git a/DMS.WPF/Views/MainView.xaml.cs b/DMS.WPF/Views/MainView.xaml.cs index f9cc13a..7160b12 100644 --- a/DMS.WPF/Views/MainView.xaml.cs +++ b/DMS.WPF/Views/MainView.xaml.cs @@ -15,14 +15,12 @@ namespace DMS.WPF.Views; public partial class MainView : Window { - private readonly DataServices _dataServices; private MainViewModel _viewModel; - public MainView(DataServices dataServices) + public MainView() { InitializeComponent(); _viewModel = App.Current.Services.GetRequiredService(); - _dataServices = dataServices; DataContext = _viewModel; NlogHelper.Info("主界面加载成功"); diff --git a/DMS.WPF/Views/SplashWindow.xaml b/DMS.WPF/Views/SplashWindow.xaml index 74e264d..2c47bc5 100644 --- a/DMS.WPF/Views/SplashWindow.xaml +++ b/DMS.WPF/Views/SplashWindow.xaml @@ -10,7 +10,7 @@ - +