protected ComicNavigationItemGridViewModel( IMainPageContent parent, MainViewModel appViewModel, NavigationTag navigationTag, ComicCollectionSortSelector initialSort ) : base(parent, appViewModel) { // Note: in the future, we may want to store this to remove the event handler switch (navigationTag) { case NavigationTag.Comics: throw new ProgrammerError("Cannot make of navigation item view model for work items"); case NavigationTag.Playlist: this.collections = this.MainViewModel.Playlists; this.collections.SetSort(initialSort); break; default: this.collections = this.MainViewModel.SortedComicCollectionsFor(navigationTag, initialSort); break; } this.collections.CollectionsChanged += this.Collections_CollectionsChanged; }
public static ComicNavigationItemGridViewModel ForViewModel( IMainPageContent parent, MainViewModel mainViewModel, NavigationTag navigationTag, ComicCollectionSortSelector initialSort, ComicItemGridState?savedState = null ) { var viewModel = new ComicNavigationItemGridViewModel(parent, mainViewModel, navigationTag, initialSort); if (savedState?.LastModified is { } lastModified&& lastModified == mainViewModel.LastModified) { viewModel.SetComicItems(savedState.Items); }
public ComicWorkItemGridViewModel( IMainPageContent parent, MainViewModel mainViewModel, ComicView comics, ComicItemGridViewModelProperties?properties = null, ComicItemGridState?savedState = null ) : base(parent, mainViewModel) { this.Properties = properties ?? new ComicItemGridViewModelProperties(); this.comics = comics.Sorted(this.SelectedSortSelector); this.comics.ComicsChanged += this.Comics_ComicsChanged; if (savedState?.LastModified is { } lastModified&& lastModified == mainViewModel.LastModified) { this.SetComicItems(savedState.Items); }