/// <summary> /// Initializes a new instance of the <see cref="Shell"/> class. /// </summary> public Shell(IModuleManager moduleManager, IModuleTracker moduleTracker, CallbackLogger logger) { if (moduleManager == null) { throw new ArgumentNullException("moduleManager"); } if (moduleTracker == null) { throw new ArgumentNullException("moduleTracker"); } if (logger == null) { throw new ArgumentNullException("logger"); } this.moduleManager = moduleManager; this.moduleTracker = moduleTracker; this.logger = logger; // I use the IModuleTracker as the data-context for data-binding. // This quickstart only demonstrates modularity for Prism and does not use data-binding patterns such as MVVM. this.DataContext = this.moduleTracker; // I set this shell's Log method as the callback for receiving log messages. this.logger.Callback = this.Log; // I subscribe to events to help track module loading/loaded progress. // The ModuleManager uses the Async Events Pattern. this.moduleManager.LoadModuleCompleted += this.ModuleManager_LoadModuleCompleted; this.moduleManager.ModuleDownloadProgressChanged += this.ModuleManager_ModuleDownloadProgressChanged; InitializeComponent(); }
/// <summary> /// Initializes a new instance of the <see cref="Shell"/> class. /// </summary> public Shell(IModuleManager moduleManager, IModuleTracker moduleTracker, CallbackLogger logger) { if (moduleManager == null) { throw new ArgumentNullException("moduleManager"); } if (moduleTracker == null) { throw new ArgumentNullException("moduleTracker"); } if (logger == null) { throw new ArgumentNullException("logger"); } this.moduleManager = moduleManager; this.moduleTracker = moduleTracker; this.logger = logger; // I use the IModuleTracker as the data-context for data-binding. // This quickstart only demonstrates modularity for Prism and does not use data-binding patterns such as MVVM. this.DataContext = this.moduleTracker; // I set this shell's Log method as the callback for receiving log messages. this.logger.Callback = this.Log; // I subscribe to events to help track module loading/loaded progress. // The ModuleManager uses the Async Events Pattern. this.moduleManager.LoadModuleCompleted += this.ModuleManager_LoadModuleCompleted; this.moduleManager.ModuleDownloadProgressChanged += this.ModuleManager_ModuleDownloadProgressChanged; InitializeComponent(); }