Files
FootwearTest/FootwearTest/App.axaml.cs
2026-05-26 15:17:18 +08:00

62 lines
2.1 KiB
C#

using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using FootwearTest.Services;
using FootwearTest.ViewModels;
using FootwearTest.Views;
using Microsoft.Extensions.DependencyInjection;
namespace FootwearTest
{
public partial class App : Application
{
private ServiceProvider? _serviceProvider;
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
_serviceProvider = ConfigureServices();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow
{
DataContext = _serviceProvider.GetRequiredService<MainWindowViewModel>(),
};
}
base.OnFrameworkInitializationCompleted();
}
private static ServiceProvider ConfigureServices()
{
var services = new ServiceCollection();
services.AddSingleton<DeviceSettings>();
services.AddSingleton<TestFormulaService>();
services.AddSingleton<TestRunRepository>();
services.AddSingleton<ReportService>();
services.AddSingleton<ExcelReportService>();
services.AddSingleton<IDeviceClient>(provider =>
{
var settings = provider.GetRequiredService<DeviceSettings>();
return settings.UseSimulator
? new SimulatedDeviceClient(settings)
: new ModbusTcpDeviceClient(settings);
});
services.AddSingleton<DashboardViewModel>();
services.AddSingleton<MethodAViewModel>();
services.AddSingleton<MethodBViewModel>();
services.AddSingleton<HistoryViewModel>();
services.AddSingleton<ReportViewModel>();
services.AddSingleton<SettingsViewModel>();
services.AddSingleton<MainWindowViewModel>();
return services.BuildServiceProvider();
}
}
}