public ShellViewModel( SettingsViewModel settingsViewModel, MainViewModel mainViewModel, IEventAggregator eventAggregator, INavigationService navigationService, IMonitorStreamsModel monitorStreamsModel, ISettingsHandler settingsHandler, PopularLivestreamWatcher popularLivestreamWatcher) { Settings = settingsViewModel ?? throw new ArgumentNullException(nameof(settingsViewModel)); this.mainViewModel = mainViewModel ?? throw new ArgumentNullException(nameof(mainViewModel)); this.navigationService = navigationService ?? throw new ArgumentNullException(nameof(navigationService)); this.monitorStreamsModel = monitorStreamsModel ?? throw new ArgumentNullException(nameof(monitorStreamsModel)); this.settingsHandler = settingsHandler ?? throw new ArgumentNullException(nameof(settingsHandler)); this.popularLivestreamWatcher = popularLivestreamWatcher ?? throw new ArgumentNullException(nameof(popularLivestreamWatcher)); ActiveItem = mainViewModel; eventAggregator.Subscribe(this); Settings.ActivateWith(this); currentAppVersion = GetType().Assembly.GetName().Version; DisplayName = $"LIVESTREAM MONITOR V{currentAppVersion.Major}.{currentAppVersion.Minor}.{currentAppVersion.Build}"; #if DEBUG // helps to know that we're running the debug rather than release version of the exe DisplayName += " (DEBUG)"; #endif }