public MediaItemViewModel(MediaListViewModel listViewModel, LocalMusicModel mediaItem) { this.listViewModel = listViewModel; MediaItem = mediaItem; RaisePropertyChanged("Title"); // This app caches all images by loading the WriteableBitmap // when the item is created, but production apps would // use a more resource friendly paging mechanism or // just use PreviewImageUri directly. // // The reason we cache here is to avoid audio gaps // between tracks on transitions when changing artwork. PreviewImage = mediaItem.Image; }
private void buildLocalMusicAlbumArtistModels() { foreach (var song in Service.Library.Musics) { var music = new LocalMusicModel { Music = song, Image = Service.Library.Thumbnails.Where(t => t.Id == song.ThumbnailId).FirstOrDefault().Image }; Musics.Add(music); var privilegedArtist = ""; if (song.AlbumArtist != UNKNOWN_ARTIST) { privilegedArtist = song.AlbumArtist; } else if (song.Artist != UNKNOWN_ARTIST) { privilegedArtist = song.Artist; } else { privilegedArtist = UNKNOWN_ARTIST; } var album = Albums.Where(a => a.Title == song.AlbumTitle && a.AlbumArtist == privilegedArtist).FirstOrDefault(); if (album == null) { album = new LocalAlbumModel { Title = song.AlbumTitle, AlbumArtist = privilegedArtist, Image = Service.Library.Thumbnails.Where(t => t.Id == music.Music.ThumbnailId).FirstOrDefault().Image, Year = song.Year }; album.Musics.Add(music); Albums.Add(album); } else { album.Musics.Add(music); } var artist = Artists.Where(a => a.Name == privilegedArtist).FirstOrDefault(); if (artist == null) { artist = new LocalArtistModel { Name = privilegedArtist }; artist.Albums.Add(album); artist.Musics.Add(music); Artists.Add(artist); } else { if (!artist.Albums.Contains(album)) { artist.Albums.Add(album); artist.Musics.Add(music); } else { artist.Musics.Add(music); } } } }