2026-01-21 14:48:51 +08:00

72 lines
2.1 KiB
C#

using AiSportsMicrospaceDB.DBContext;
using Common;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.ML.Runtime;
using System.Configuration;
using System.Data;
using System.IO;
using System.Windows;
using Wpf_AiSportsMicrospace.Views;
using Yztob.AiSports.Common;
using Yztob.AiSports.Common.Implement;
namespace Wpf_AiSportsMicrospace;
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public static Microsoft.Extensions.Hosting.IHost AppHost { get; private set; }
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
#if DEBUG
DebugTracker.Enabled = true;
DebugTracker.Channels.Add(new DiagnosisDebugTrackChannel());
#endif
// 1. 创建 Host
AppHost = Host.CreateDefaultBuilder()
.ConfigureAppConfiguration((context, config) =>
{
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.ConfigureServices((context, services) =>
{
// 读取数据库连接
var connectionString = context.Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(connectionString));
// 注入 MainWindow
services.AddSingleton<Main>();
})
.Build();
// 2. 启动 Host
AppHost.Start();
// 3. 初始化全局配置
var configuration = AppHost.Services.GetRequiredService<IConfiguration>();
AppSettings.Init(configuration); // 这时 AppHost 已经有值了
// 4. 用 DI 创建窗口
var mainWin = AppHost.Services.GetRequiredService<Main>();
Current.MainWindow = mainWin;
mainWin.Show();
var newPage = new Home();
mainWin.SwitchPage(newPage, true);
}
}