Files

87 lines
3.2 KiB
C#

using System;
using System.Windows;
using Prism.Container.DryIoc;
using Prism.Ioc;
using XP.Common.Configs;
using XP.Common.Dump.Configs;
using XP.Common.Dump.Implementations;
using XP.Common.Dump.Interfaces;
using XP.Common.Helpers;
using XP.Common.Localization.Configs;
using XP.Common.Localization.Extensions;
using XP.Common.Localization;
using XP.Common.Localization.Implementations;
using XP.Common.Localization.Interfaces;
using XP.Common.Logging;
using XP.Common.Logging.Implementations;
using XP.Common.Logging.Interfaces;
using System.Resources;
using XP.Scan.Views;
using Prism.Navigation.Regions;
namespace XP.Scan
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App
{
protected override Window CreateShell()
{
// 在创建窗口前初始化 LocalizationExtension,确保 XAML 标记扩展能获取到翻译
var localizationService = Container.Resolve<ILocalizationService>();
// 强制设置 UI 语言为中文(确保 ResourceManager 返回中文资源)
var zhCN = new System.Globalization.CultureInfo("zh-CN");
System.Globalization.CultureInfo.CurrentUICulture = zhCN;
System.Globalization.CultureInfo.CurrentCulture = zhCN;
LocalizationExtension.Initialize(localizationService);
LocalizationHelper.Initialize(localizationService);
// 注册 XP.Scan 模块的资源源 | Register XP.Scan module resource source
var scanResourceManager = new ResourceManager("XP.Scan.Resources.Resources", typeof(App).Assembly);
localizationService.RegisterResourceSource("XP.Scan", scanResourceManager);
return Container.Resolve<MainWindow>();
}
protected override void OnInitialized()
{
base.OnInitialized();
// 启动时导航到 XPScanView
var regionManager = Container.Resolve<IRegionManager>();
regionManager.RequestNavigate("ContentRegion", nameof(XPScanView));
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
// 初始化 Serilog
SerilogInitializer.Initialize(new SerilogConfig
{
LogPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files", "Logs")
});
// 日志服务
containerRegistry.RegisterSingleton<ILoggerService, SerilogLoggerService>();
// 本地化服务
containerRegistry.RegisterSingleton<ILocalizationConfig, LocalizationConfig>();
containerRegistry.RegisterSingleton<ILocalizationService, ResxLocalizationService>();
// Dump 服务
containerRegistry.RegisterSingleton<DumpConfig>(() => ConfigLoader.LoadDumpConfig());
containerRegistry.RegisterSingleton<IDumpService, DumpService>();
// 注册 XPScanView 用于区域导航
containerRegistry.RegisterForNavigation<XPScanView>();
}
protected override IContainerExtension CreateContainerExtension()
{
return new DryIocContainerExtension();
}
}
}