using Prism.Regions; using Prism.Services.Dialogs; using Syncfusion.Windows.Shared; using Prism.Ioc; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using CapMachine.Wpf.Views; namespace CapMachine.Wpf.Services { /// /// App启动服务 /// 暂时不用 /// public class AppStartService:IAppStartService { /// /// 退出 /// public void Exit() { if (System.Windows.Application.Current is IAppTaskBar appTaskBar) appTaskBar.Dispose(); Environment.Exit(0); } /// /// 登录退出 /// public void Logout() { App.Current.MainWindow.Hide(); SplashScreenInitialized(); App.Current.MainWindow.Show(); if (App.Current.MainWindow.DataContext is INavigationAware navigationAware) navigationAware.OnNavigatedTo(null); } /// /// CreateShell /// public void CreateShell() { var container = ContainerLocator.Container; //var userConfigurationService = container.Resolve(); //userConfigurationService.OnAccessTokenRefresh = OnAccessTokenRefresh; //userConfigurationService.OnSessionTimeOut = OnSessionTimeout; //初始的窗户 SplashScreenInitialized(); #region 初版 //Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN"); //从容器中获取MainView的实例对象,系统运行的主窗体 //var container = ContainerLocator.Container; var shell = container.Resolve("MainView"); //加载种子数据 //var SeekData = new SeekData(container.Resolve()); if (shell is Window view) { //更新Prism注册区域信息 var regionManager = container.Resolve(); RegionManager.SetRegionManager(view, regionManager); RegionManager.UpdateRegions(); //给MainView的MainViewFooterContentRegion区域设置FooterView具体的信息 regionManager.RequestNavigate("MainViewFooterContentRegion", nameof(FooterView)); regionManager.RequestNavigate("MainViewContentRegion", nameof(MonitorView)); //调用首页的INavigationAware 接口做一个初始化操作 if (view.DataContext is INavigationAware navigationAware) { navigationAware.OnNavigatedTo(null); //呈现首页 App.Current.MainWindow = view; } } //先加载服务,防止在ViewModel中使用时速度慢 var appVersionService = ContainerLocator.Container.Resolve(); //var appVersionService1 = ContainerLocator.Container.Resolve(); //var appVersionService2 = ContainerLocator.Container.Resolve(); var appVersionService12 = ContainerLocator.Container.Resolve(); var appVersionService3 = ContainerLocator.Container.Resolve(); var appVersionService4 = ContainerLocator.Container.Resolve(); var appVersionService5 = ContainerLocator.Container.Resolve(); var appVersionService6 = ContainerLocator.Container.Resolve(); var appVersionService7 = ContainerLocator.Container.Resolve(); var appVersionService8 = ContainerLocator.Container.Resolve(); var appVersionService9 = ContainerLocator.Container.Resolve(); var appVersionService10 = ContainerLocator.Container.Resolve(); var appVersionService11 = ContainerLocator.Container.Resolve(); var appVersionService15 = ContainerLocator.Container.Resolve(); //给当前的全局异常捕捉服务使用 //LogService = ContainerLocator.Container.Resolve(); //LogService.Error("ex.ToString()"); //base.OnInitialized(); #endregion //var shell = container.Resolve("MainView"); //if (shell is ChromelessWindow view) //{ // var regionManager = container.Resolve(); // RegionManager.SetRegionManager(view, regionManager); // RegionManager.UpdateRegions(); // if (view.DataContext is INavigationAware navigationAware) // { // navigationAware.OnNavigatedTo(null); // App.Current.MainWindow = (Window)shell; // } //} } private void SplashScreenInitialized() { var dialogService = ContainerLocator.Container.Resolve(); var result = dialogService.ShowWindow("SplashScreenView").Result; if (result == ButtonResult.Ignore) { if (!Authorization()) Exit(); } else if (result == ButtonResult.No) Exit(); } private bool Authorization() { var validationResult = Validation(); if (validationResult == ButtonResult.Retry) return Authorization(); return validationResult == ButtonResult.OK; static ButtonResult Validation() { var dialogService = ContainerLocator.Container.Resolve(); return dialogService.ShowWindow("MainView").Result; } } } }