using Main.Test.ViewModels; using Main.Test.Views; using MAX.Core.DependencyInjection; using MAX.Core.Logger; using Prism.Ioc; using Prism.Modularity; using Prism.Mvvm; using System.Configuration; using System.Data; using System.Windows; using Trade.Framework; using Trade.Framework.Extensions; using Trade.Framework.Services; namespace Main.Test; /// /// Interaction logic for App.xaml /// public partial class App : FrameworkApplication { public IScopedProvider CurrentScope => throw new NotImplementedException(); protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); } protected override Window CreateShell() { return Container.Resolve(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { // 严格模式:FrameworkApplication 已关闭 DryIoc 按需动态注册(WithConcreteTypeDynamicRegistrations), // 所有被解析的类型必须显式注册,否则抛 ContainerException。 // 启动 Shell containerRegistry.Register(); // 窗口/控件 ViewModel(DISource 从容器解析) containerRegistry.Register(); containerRegistry.Register(); // 对话框:RegisterDialog 只注册 View 本身,VM 由 ViewModelLocator 从容器解析,需单独注册 containerRegistry.RegisterDialog(nameof(bbbDialogView)); containerRegistry.Register(); // 服务:原先靠 DryIoc 动态注册(Transient),显式注册保持同样行为 //containerRegistry.Register(); // 若希望 UserManager 全局只实例化一次: // containerRegistry.RegisterSingleton(); //containerRegistry.RegisterSingleton(); } }