161 lines
5.9 KiB
C#
161 lines
5.9 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// App启动服务
|
||
/// 暂时不用
|
||
/// </summary>
|
||
public class AppStartService:IAppStartService
|
||
{
|
||
/// <summary>
|
||
/// 退出
|
||
/// </summary>
|
||
public void Exit()
|
||
{
|
||
if (System.Windows.Application.Current is IAppTaskBar appTaskBar)
|
||
appTaskBar.Dispose();
|
||
|
||
Environment.Exit(0);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 登录退出
|
||
/// </summary>
|
||
public void Logout()
|
||
{
|
||
App.Current.MainWindow.Hide();
|
||
SplashScreenInitialized();
|
||
App.Current.MainWindow.Show();
|
||
|
||
if (App.Current.MainWindow.DataContext is INavigationAware navigationAware)
|
||
navigationAware.OnNavigatedTo(null);
|
||
}
|
||
|
||
/// <summary>
|
||
/// CreateShell
|
||
/// </summary>
|
||
public void CreateShell()
|
||
{
|
||
var container = ContainerLocator.Container;
|
||
|
||
//var userConfigurationService = container.Resolve<UserConfigurationService>();
|
||
//userConfigurationService.OnAccessTokenRefresh = OnAccessTokenRefresh;
|
||
//userConfigurationService.OnSessionTimeOut = OnSessionTimeout;
|
||
|
||
//初始的窗户
|
||
SplashScreenInitialized();
|
||
|
||
#region 初版
|
||
|
||
//Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
|
||
|
||
//从容器中获取MainView的实例对象,系统运行的主窗体
|
||
//var container = ContainerLocator.Container;
|
||
var shell = container.Resolve<object>("MainView");
|
||
|
||
//加载种子数据
|
||
//var SeekData = new SeekData(container.Resolve<IFreeSql>());
|
||
|
||
if (shell is Window view)
|
||
{
|
||
//更新Prism注册区域信息
|
||
var regionManager = container.Resolve<IRegionManager>();
|
||
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<IFreeSql>();
|
||
//var appVersionService1 = ContainerLocator.Container.Resolve<MachineDataService>();
|
||
//var appVersionService2 = ContainerLocator.Container.Resolve<ILogService>();
|
||
var appVersionService12 = ContainerLocator.Container.Resolve<AlarmService>();
|
||
var appVersionService3 = ContainerLocator.Container.Resolve<MachineRtDataService>();
|
||
var appVersionService4 = ContainerLocator.Container.Resolve<ProStepConfigPsView>();
|
||
var appVersionService5 = ContainerLocator.Container.Resolve<ProConfigView>();
|
||
var appVersionService6 = ContainerLocator.Container.Resolve<HistoryDataView>();
|
||
var appVersionService7 = ContainerLocator.Container.Resolve<RealTimeChartView>();
|
||
var appVersionService8 = ContainerLocator.Container.Resolve<CanDriveService>();
|
||
var appVersionService9 = ContainerLocator.Container.Resolve<DataRecordService>();
|
||
var appVersionService10 = ContainerLocator.Container.Resolve<HighSpeedDataService>();
|
||
var appVersionService11 = ContainerLocator.Container.Resolve<PPCService>();
|
||
var appVersionService15 = ContainerLocator.Container.Resolve<ComActionService>();
|
||
|
||
|
||
|
||
//给当前的全局异常捕捉服务使用
|
||
//LogService = ContainerLocator.Container.Resolve<ILogService>();
|
||
//LogService.Error("ex.ToString()");
|
||
//base.OnInitialized();
|
||
|
||
#endregion
|
||
|
||
|
||
//var shell = container.Resolve<object>("MainView");
|
||
//if (shell is ChromelessWindow view)
|
||
//{
|
||
// var regionManager = container.Resolve<IRegionManager>();
|
||
// 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<IHostDialogService>();
|
||
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<IHostDialogService>();
|
||
return dialogService.ShowWindow("MainView").Result;
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|