以下是 MaxWell 工业上位机项目的最终完整补充1. Region 管理面板Region Management Panel这是一个用于运行时监控和管理 Region的调试/管理界面适合工业项目开发和维护阶段使用。RegionManagementView.xaml!-- Views/RegionManagementView.xaml --UserControlx:ClassMaxWell.Views.RegionManagementViewxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlGridMargin15Grid.RowDefinitionsRowDefinitionHeightAuto/RowDefinitionHeight*//Grid.RowDefinitionsStackPanelOrientationHorizontalMargin0,0,0,12ButtonContent刷新Command{Binding RefreshCommand}Margin5/ButtonContent激活 MainRegionCommand{Binding ActivateMainRegionCommand}Margin5/TextBlockText当前活跃 RegionMargin20,5,5,5FontWeightSemiBold/TextBlockText{Binding ActiveRegionName}Foreground#27AE60FontWeightSemiBold//StackPanelDataGridGrid.Row1ItemsSource{Binding RegionInfoList}AutoGenerateColumnsFalseDataGrid.ColumnsDataGridTextColumnHeaderRegion 名称Binding{Binding RegionName}Width180/DataGridTextColumnHeader视图数量Binding{Binding ViewCount}Width90/DataGridTextColumnHeader当前视图Binding{Binding ActiveView}Width220/DataGridTextColumnHeader状态Binding{Binding Status}Width100//DataGrid.Columns/DataGrid/Grid/UserControlRegionManagementViewModel.cs// ViewModels/RegionManagementViewModel.csusingPrism.Regions;usingPrism.Mvvm;usingSystem.Collections.ObjectModel;namespaceMaxWell.ViewModels;publicclassRegionManagementViewModel:ViewModelBase{privatereadonlyIRegionManager_regionManager;publicObservableCollectionRegionInfoRegionInfoList{get;}new();publicstringActiveRegionName{get;set;}MainRegion;publicDelegateCommandRefreshCommand{get;}publicDelegateCommandActivateMainRegionCommand{get;}publicRegionManagementViewModel(IRegionManagerregionManager,IEventAggregatoreventAggregator):base(eventAggregator){_regionManagerregionManager;RefreshCommandnewDelegateCommand(RefreshRegions);ActivateMainRegionCommandnewDelegateCommand(()ActiveRegionNameMainRegion);RefreshRegions();}privatevoidRefreshRegions(){RegionInfoList.Clear();foreach(varregionin_regionManager.Regions){RegionInfoList.Add(newRegionInfo{RegionNameregion.Name,ViewCountregion.Views.Count(),ActiveViewregion.ActiveViews.FirstOrDefault()?.GetType().Name??无,Statusregion.Views.Count()0?活跃:空闲});}}}publicclassRegionInfo{publicstringRegionName{get;set;}string.Empty;publicintViewCount{get;set;}publicstringActiveView{get;set;}string.Empty;publicstringStatus{get;set;}string.Empty;}2. 完整解决方案结构最终版MaxWell.sln ├── MaxWell/ # WPF 主启动项目 │ ├── App.xaml.cs │ ├── MainWindow.xaml │ └── Views/ │ ├── LoginView.xaml │ ├── RegionManagementView.xaml │ └── ... │ ├── MaxWell.Application/ # 应用层命令、通知、事件 │ ├── Commands/ │ ├── Notifications/ │ ├── Events/ │ └── Behaviors/ # Pipeline Behaviors │ ├── MaxWell.Domain/ # 领域层 │ ├── Entities/ │ ├── Enums/ │ └── ValueObjects/ │ ├── MaxWell.Infrastructure/ # 基础设施层 │ ├── Persistence/ │ ├── Hardware/ │ └── Common/ │ ├── MaxWell.Modules/ # 模块化核心 │ ├── InfrastructureModule/ # 基础模块必须 │ ├── ExperimentModule/ # 实验控制 │ ├── MonitorModule/ # 实时监控 │ ├── VisionModule/ # 视觉检测 │ ├── AlarmModule/ # 报警中心 │ └── HistoryModule/ # 历史数据 │ ├── MaxWell.CommonBasis/ # 公共基础 │ ├── ModuleConfig/ # 模块配置管理 │ ├── Regions/ # Region Behaviors │ ├── Services/ # UserService, PermissionService │ └── Navigation/ # 权限拦截器 │ ├── MaxWell.Models/ # 共享模型 └── MaxWell.Tests/ # 测试项目3. 最终注册App.xaml.cs 关键片段protectedoverridevoidRegisterTypes(IContainerRegistrycontainerRegistry){// 模块管理面板containerRegistry.RegisterForNavigationRegionManagementView,RegionManagementViewModel(RegionManagementView);// 基础服务containerRegistry.RegisterSingletonModuleConfigurationManager();containerRegistry.RegisterSingletonDynamicModuleLoader();containerRegistry.RegisterSingletonIModulePermissionService,ModulePermissionService();containerRegistry.RegisterSingletonIUserService,UserService();}protectedoverridevoidOnInitialized(){base.OnInitialized();// 加载模块配置varconfigManagerContainer.ResolveModuleConfigurationManager();configManager.LoadModulesFromConfig();// 注册高级 Region BehaviorvarregionManagerContainer.ResolveIRegionManager();regionManager.Regions[MainRegion].Behaviors.Add(IntegratedRegionBehavior,newIntegratedRegionBehavior(...));}这个结构已经是完整的工业级 Prism 模块化架构具备动态权限菜单Region 动画 状态保持模块热加载用户登录 权限控制多 Region 联动
以下是 MaxWell 工业上位机项目的最终完整补充
以下是 MaxWell 工业上位机项目的最终完整补充1. Region 管理面板Region Management Panel这是一个用于运行时监控和管理 Region的调试/管理界面适合工业项目开发和维护阶段使用。RegionManagementView.xaml!-- Views/RegionManagementView.xaml --UserControlx:ClassMaxWell.Views.RegionManagementViewxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlGridMargin15Grid.RowDefinitionsRowDefinitionHeightAuto/RowDefinitionHeight*//Grid.RowDefinitionsStackPanelOrientationHorizontalMargin0,0,0,12ButtonContent刷新Command{Binding RefreshCommand}Margin5/ButtonContent激活 MainRegionCommand{Binding ActivateMainRegionCommand}Margin5/TextBlockText当前活跃 RegionMargin20,5,5,5FontWeightSemiBold/TextBlockText{Binding ActiveRegionName}Foreground#27AE60FontWeightSemiBold//StackPanelDataGridGrid.Row1ItemsSource{Binding RegionInfoList}AutoGenerateColumnsFalseDataGrid.ColumnsDataGridTextColumnHeaderRegion 名称Binding{Binding RegionName}Width180/DataGridTextColumnHeader视图数量Binding{Binding ViewCount}Width90/DataGridTextColumnHeader当前视图Binding{Binding ActiveView}Width220/DataGridTextColumnHeader状态Binding{Binding Status}Width100//DataGrid.Columns/DataGrid/Grid/UserControlRegionManagementViewModel.cs// ViewModels/RegionManagementViewModel.csusingPrism.Regions;usingPrism.Mvvm;usingSystem.Collections.ObjectModel;namespaceMaxWell.ViewModels;publicclassRegionManagementViewModel:ViewModelBase{privatereadonlyIRegionManager_regionManager;publicObservableCollectionRegionInfoRegionInfoList{get;}new();publicstringActiveRegionName{get;set;}MainRegion;publicDelegateCommandRefreshCommand{get;}publicDelegateCommandActivateMainRegionCommand{get;}publicRegionManagementViewModel(IRegionManagerregionManager,IEventAggregatoreventAggregator):base(eventAggregator){_regionManagerregionManager;RefreshCommandnewDelegateCommand(RefreshRegions);ActivateMainRegionCommandnewDelegateCommand(()ActiveRegionNameMainRegion);RefreshRegions();}privatevoidRefreshRegions(){RegionInfoList.Clear();foreach(varregionin_regionManager.Regions){RegionInfoList.Add(newRegionInfo{RegionNameregion.Name,ViewCountregion.Views.Count(),ActiveViewregion.ActiveViews.FirstOrDefault()?.GetType().Name??无,Statusregion.Views.Count()0?活跃:空闲});}}}publicclassRegionInfo{publicstringRegionName{get;set;}string.Empty;publicintViewCount{get;set;}publicstringActiveView{get;set;}string.Empty;publicstringStatus{get;set;}string.Empty;}2. 完整解决方案结构最终版MaxWell.sln ├── MaxWell/ # WPF 主启动项目 │ ├── App.xaml.cs │ ├── MainWindow.xaml │ └── Views/ │ ├── LoginView.xaml │ ├── RegionManagementView.xaml │ └── ... │ ├── MaxWell.Application/ # 应用层命令、通知、事件 │ ├── Commands/ │ ├── Notifications/ │ ├── Events/ │ └── Behaviors/ # Pipeline Behaviors │ ├── MaxWell.Domain/ # 领域层 │ ├── Entities/ │ ├── Enums/ │ └── ValueObjects/ │ ├── MaxWell.Infrastructure/ # 基础设施层 │ ├── Persistence/ │ ├── Hardware/ │ └── Common/ │ ├── MaxWell.Modules/ # 模块化核心 │ ├── InfrastructureModule/ # 基础模块必须 │ ├── ExperimentModule/ # 实验控制 │ ├── MonitorModule/ # 实时监控 │ ├── VisionModule/ # 视觉检测 │ ├── AlarmModule/ # 报警中心 │ └── HistoryModule/ # 历史数据 │ ├── MaxWell.CommonBasis/ # 公共基础 │ ├── ModuleConfig/ # 模块配置管理 │ ├── Regions/ # Region Behaviors │ ├── Services/ # UserService, PermissionService │ └── Navigation/ # 权限拦截器 │ ├── MaxWell.Models/ # 共享模型 └── MaxWell.Tests/ # 测试项目3. 最终注册App.xaml.cs 关键片段protectedoverridevoidRegisterTypes(IContainerRegistrycontainerRegistry){// 模块管理面板containerRegistry.RegisterForNavigationRegionManagementView,RegionManagementViewModel(RegionManagementView);// 基础服务containerRegistry.RegisterSingletonModuleConfigurationManager();containerRegistry.RegisterSingletonDynamicModuleLoader();containerRegistry.RegisterSingletonIModulePermissionService,ModulePermissionService();containerRegistry.RegisterSingletonIUserService,UserService();}protectedoverridevoidOnInitialized(){base.OnInitialized();// 加载模块配置varconfigManagerContainer.ResolveModuleConfigurationManager();configManager.LoadModulesFromConfig();// 注册高级 Region BehaviorvarregionManagerContainer.ResolveIRegionManager();regionManager.Regions[MainRegion].Behaviors.Add(IntegratedRegionBehavior,newIntegratedRegionBehavior(...));}这个结构已经是完整的工业级 Prism 模块化架构具备动态权限菜单Region 动画 状态保持模块热加载用户登录 权限控制多 Region 联动