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 { /// /// Interaction logic for App.xaml /// public partial class App { protected override Window CreateShell() { // 在创建窗口前初始化 LocalizationExtension,确保 XAML 标记扩展能获取到翻译 var localizationService = Container.Resolve(); // 强制设置 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(); } protected override void OnInitialized() { base.OnInitialized(); // 启动时导航到 XPScanView var regionManager = Container.Resolve(); 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(); // 本地化服务 containerRegistry.RegisterSingleton(); containerRegistry.RegisterSingleton(); // Dump 服务 containerRegistry.RegisterSingleton(() => ConfigLoader.LoadDumpConfig()); containerRegistry.RegisterSingleton(); // 注册 XPScanView 用于区域导航 containerRegistry.RegisterForNavigation(); } protected override IContainerExtension CreateContainerExtension() { return new DryIocContainerExtension(); } } }