App.xaml.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Device;
  2. using EEMSMain.Data;
  3. using EEMSMain.Views;
  4. using GeneralData;
  5. using GlobalData;
  6. using Prism.Ioc;
  7. using System.IO;
  8. using System.Windows;
  9. using UICommon.CommonContainer;
  10. namespace EEMSMain;
  11. /// <summary>
  12. /// Interaction logic for App.xaml
  13. /// </summary>
  14. public partial class App : PrismApplication
  15. {
  16. protected override Window CreateShell()
  17. {
  18. return Container.Resolve<MainWindow>();
  19. }
  20. protected override void RegisterTypes(IContainerRegistry containerRegistry)
  21. {
  22. containerRegistry.Register<ICommonContainer, CommonContainer>();
  23. containerRegistry.RegisterSingleton<ContainerManager>();
  24. containerRegistry.RegisterSingleton<DeviceCollection>();
  25. }
  26. protected override IModuleCatalog CreateModuleCatalog()
  27. {
  28. return new DirectoryModuleCatalog() { ModulePath = Path.Combine(Environment.CurrentDirectory, "Modules") };
  29. }
  30. }
  31. public class CommonContainer(IRegionManager regionManager,
  32. IModuleManager moduleManager, ContainerManager containerManager) : ICommonContainer
  33. {
  34. private const string _MainReginName = "MainRegion";
  35. string ICommonContainer.MainReginName => _MainReginName;
  36. void ICommonContainer.AddModule(string name)
  37. {
  38. moduleManager.LoadModule(name);
  39. }
  40. void ICommonContainer.AddNavigation(ContainerInfo containerInfo)
  41. {
  42. if (containerInfo.IsHidden)
  43. return;
  44. App.Current.Dispatcher.Invoke(() =>
  45. {
  46. containerManager.Containers.TryAdd(containerInfo.Index, containerInfo);
  47. });
  48. }
  49. void ICommonContainer.RequestNavigation(string name)
  50. {
  51. regionManager.RequestNavigate(_MainReginName, name);
  52. }
  53. }