Files
CapMachine/CapMachine.Wpf/App.xaml.cs
2024-07-05 17:43:02 +08:00

150 lines
6.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using AutoMapper;
using CapMachine.Core.IService;
using CapMachine.Wpf.MapperProfile;
using CapMachine.Wpf.Services;
using CapMachine.Wpf.ViewModels;
using CapMachine.Wpf.Views;
using FreeSql;
using Prism.DryIoc;
using Prism.Ioc;
using Prism.Regions;
using System.Windows;
namespace CapMachine.Wpf
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : PrismApplication
{
public App()
{
try
{
//24.2.7
//Syncfusion.SfSkinManager.SfSkinManager.ApplyStylesOnApplication = true;
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("MzEyMzM3NkAzMjM0MmUzMDJlMzBHdjVKNUNpNWZxYXQwR05ZbVYvUEtzbGxXMnVxRjYvRGtLSlZUOGpjQW44PQ==");
// 授权 a717c797-59e3-48de-b6b4-574a4e03dc79
if (!HslCommunication.Authorization.SetAuthorizationCode("a717c797-59e3-48de-b6b4-574a4e03dc79"))
{
//active failed
//MessageBox.Show("授权失败当前程序只能使用8小时");
//return;
}
else
{
//IsActive = true;
}
//SfSkinManager.ApplyStylesOnApplication = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
protected override Window CreateShell() => null;
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
////注册日志服务
//containerRegistry.RegisterSingleton<ILogService, LogService>();
////注册设备服务
//containerRegistry.RegisterSingleton<MachineDataService>();
containerRegistry.RegisterSingleton<MachineRtDataService>();
//注册AutoMapper 将IAutoMapperProvider注入IOC容器并对外提供IMapper注入类型。
containerRegistry.RegisterSingleton<IMapperProvider, MapperConfig>();
containerRegistry.Register(typeof(IMapper), GetMapper);
//注册IFreeSql实例 单例
containerRegistry.RegisterSingleton<IFreeSql>(() =>
{
IFreeSql Fsql = new FreeSqlBuilder()
//.UseConnectionString(DataType.SqlServer, "Data Source=CT-PC;user instance=false;Initial Catalog=KylinEMS;Encrypt=True;TrustServerCertificate=True;User ID=sa;Password=12345678")
.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=CT-PC;user instance=false;Initial Catalog=CapMachine;Encrypt=True;TrustServerCertificate=True;User ID=sa;Password=12345678")
.UseAutoSyncStructure(true)
.Build();
return Fsql;
});
containerRegistry.RegisterSingleton<INavigationMenuService, NavigationMenuService>();
containerRegistry.RegisterForNavigation<MainView, MainViewModel>();
containerRegistry.RegisterForNavigation<MonitorView, MonitorViewModel>();
containerRegistry.RegisterForNavigation<ProConfigView, ProConfigViewModel>();
containerRegistry.RegisterForNavigation<RealTimeChartView, RealTimeChartViewModel>();
//containerRegistry.RegisterForNavigation<ProChartView, ProChartViewModel>();
//containerRegistry.RegisterForNavigation<ProConfigView, ProConfigViewModel>();
//注册Dialog视图时绑定VM
containerRegistry.RegisterDialog<DialogCreateProView, DialogCreateProViewModel>();
containerRegistry.RegisterDialog<DialogEditProView, DialogEditProViewModel>();
containerRegistry.RegisterDialog<DialogChartRtConfigView, DialogChartRtConfigViewModel>();
//注册AutoMapper
//containerRegistry.RegisterSingleton<IAutoMapperProvider, AutoMapperProvider>();
//containerRegistry.Register(typeof(IMapper), GetMapper);
}
//private IMapper GetMapper(IContainerProvider container)
//{
// var provider = container.Resolve<IAutoMapperProvider>();
// return provider.GetMapper();
//}
/// <summary>
/// 将IAutoMapperProvider注入IOC容器并对外提供IMapper注入类型。
/// </summary>
/// <param name="container"></param>
/// <returns></returns>
private IMapper GetMapper(IContainerProvider container)
{
var provider = container.Resolve<IMapperProvider>();
return provider.GetMapper();
}
/// <summary>
/// 系统初始化
/// </summary>
protected override void OnInitialized()
{
//从容器中获取MainView的实例对象
var container = ContainerLocator.Container;
var shell = container.Resolve<object>("MainView");
if (shell is Window view)
{
//更新Prism注册区域信息
var regionManager = container.Resolve<IRegionManager>();
RegionManager.SetRegionManager(view, regionManager);
RegionManager.UpdateRegions();
//调用首页的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 appVersionService3 = ContainerLocator.Container.Resolve<MachineRtDataService>();
base.OnInitialized();
}
}
}