using AxiOmron.PcbCheck.Options;
using AxiOmron.PcbCheck.Services.Interfaces;
using AxiOmron.PcbCheck.ViewModels;
namespace AxiOmron.PcbCheck.DesignTime;
///
/// 为 XAML 设计器提供基于真实 ViewModel 的设计时定位器。
///
public sealed class DesignTimeViewModelLocator
{
private readonly DesignTimeAppStateStore _appStateStore = new();
private readonly DesignTimeDispatcherService _dispatcherService = new();
private readonly DesignTimeWorkflowControlService _workflowControlService = new();
private readonly DesignTimeAppConfigService _appConfigService = new();
private readonly DesignTimeAdminUnlockDialogService _adminUnlockDialogService = new();
private readonly DesignTimeSftpLookupService _sftpLookupService = new();
private readonly DesignTimePlcService _plcService = new();
private MainWindowViewModel? _mainWindowViewModel;
private SystemSettingViewModel? _systemSettingViewModel;
///
/// 获取首页设计时视图模型。
///
public MainWindowViewModel MainWindowViewModel
=> _mainWindowViewModel ??= CreateMainWindowViewModel();
///
/// 获取系统设置设计时视图模型。
///
public SystemSettingViewModel SystemSettingViewModel
=> _systemSettingViewModel ??= new SystemSettingViewModel(_appConfigService, _sftpLookupService, _appStateStore, _dispatcherService, _plcService);
///
/// 创建首页设计时视图模型。
///
/// 填充了设计时演示数据的真实视图模型实例。
private MainWindowViewModel CreateMainWindowViewModel()
{
AppConfig config = _appConfigService.Load();
return new MainWindowViewModel(_appStateStore, _dispatcherService, _workflowControlService, config, _adminUnlockDialogService);
}
}