MauiProgram.cs 2.4 KB
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.DependencyInjection;
using IndustrialControl.Services;

namespace IndustrialControl
{
    public static class MauiProgram
    {
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });
            builder.Services.AddSingleton<AppShell>();
            // 注册 ConfigLoader
            builder.Services.AddSingleton<Services.ConfigLoader>();
            builder.Services.AddSingleton<Services.LogService>();
            builder.Services.AddSingleton<IWarehouseDataService, MockWarehouseDataService>();

            // 扫码服务
            builder.Services.AddSingleton<ScanService>();


            // ===== 注册 ViewModels =====
            builder.Services.AddTransient<ViewModels.LoginViewModel>();
            builder.Services.AddTransient<ViewModels.HomeViewModel>();
            builder.Services.AddTransient<ViewModels.AdminViewModel>();
            builder.Services.AddTransient<ViewModels.LogsViewModel>();
            builder.Services.AddTransient<ViewModels.InboundMaterialViewModel>();
            builder.Services.AddTransient<ViewModels.InboundProductionViewModel>();
            builder.Services.AddTransient<ViewModels.OutboundMaterialViewModel>();
            builder.Services.AddTransient<ViewModels.OutboundFinishedViewModel>();

            // ===== 注册 Pages(DI 创建)=====
            builder.Services.AddTransient<Pages.LoginPage>();
            builder.Services.AddTransient<Pages.HomePage>();
            builder.Services.AddTransient<Pages.AdminPage>();
            builder.Services.AddTransient<Pages.LogsPage>();

            // 注册需要路由的页面
            builder.Services.AddTransient<Pages.InboundMaterialPage>();
            builder.Services.AddTransient<Pages.InboundProductionPage>();
            builder.Services.AddTransient<Pages.OutboundMaterialPage>();
            builder.Services.AddTransient<Pages.OutboundFinishedPage>();

#if DEBUG
            builder.Logging.AddDebug();
#endif

            return builder.Build();
        }
    }
}