public MainWindowViewModel(List <Session> sessions) { Title = "Ignite Video Viewer / Downloader v1.0"; cts = new CancellationTokenSource(); var fileName = GetFavoritesFileName(true); var favorites = GetFavorites(fileName); foreach (var session in sessions) { session.OnSelectionChanged += (s, e) => { if (allSelected && !e.Value) { allSelected = false; RaisePropertyChanged(() => AllSelected); } else if (!allSelected && Sessions.All(c => c.Selected)) { allSelected = true; RaisePropertyChanged(() => AllSelected); } UpdateUI(); }; if (favorites.TryGetValue(session.Code, out bool isFavorite)) { session.IsFavorite = isFavorite; } } Sessions = sessions; SessionFilterView = (CollectionView)CollectionViewSource.GetDefaultView(Sessions); SessionFilterView.Filter = OnFilterTriggered; SessionFilterView.CurrentChanged += (s, e) => { SessionsCount = $"{SessionFilterView.Count:N0} Sessions"; }; UpdateUI(); DownloadVideos = true; Downloading = false; ShowStandardStatusPrompt(); SelectedSessionKind = null; }