2013-05-02 3 views
0

Я делаю музыкальный плеер для Windows Phone (C#). Я решил запустить приложение с Pivot-Pages. Один из них - это список альбомов, и в левой части списка есть альбом Art. Я сделал класс со свойствами:У каждого альбома есть то же самое

BitmapImage artwork; 
Album alb; 

и я сделал viewmodelclass для связывания:

ObservableCollection<ViewModelHelper.AlbumHelper> albums = new ObservableCollection<ViewModelHelper.AlbumHelper>(); 

    public ObservableCollection<ViewModelHelper.AlbumHelper> Albums 
    { 
     get { return albums; } 
    } 

    public AlbenViewModel() 
    { 
     LoadAlbums(); 
    } 

    public void LoadAlbums() 
    { 
     using (MediaLibrary mediaLib = new MediaLibrary()) 
     { 
      BitmapImage bmp = new BitmapImage(); 

      foreach (Album alb in mediaLib.Albums) 
      { 
       if (alb.HasArt == true) 
       { 
        bmp.SetSource(alb.GetAlbumArt()); 
        albums.Add(new ViewModelHelper.AlbumHelper(bmp, alb)); 
       } 
       else 
       { 
        bmp.UriSource = new Uri("/Gesture-Music-Player;component/Images/noArtwork.png", UriKind.Relative); 
        albums.Add(new ViewModelHelper.AlbumHelper(bmp, alb)); 
       } 
      } 
     } 
    } 

Когда я выполнить это, Album Arts все же (что является Album Art последнего альбома в моей коллекции). Если я удаляю условие if, то, как и должно быть, все это изображение из альбома UriSource.

Я не понимаю, почему последнее изображение установлено для всех альбомов.

ответ

3

Вы используете только один BitmapImage, который вы впоследствии перезаписываете каждый раз. Вот почему вы видите только последний.

Вы должны переместить создание BitmapImage внутри для цикла:

foreach (Album alb in mediaLib.Albums) 
{ 
    BitmapImage bmp = new BitmapImage(); 
    if (alb.HasArt == true) 
    { 
     bmp.SetSource(alb.GetAlbumArt()); 
     albums.Add(new ViewModelHelper.AlbumHelper(bmp, alb)); 
    } 
    else 
    { 
     bmp.UriSource = new Uri("/Gesture-Music-Player;component/Images/noArtwork.png", UriKind.Relative); 
     albums.Add(new ViewModelHelper.AlbumHelper(bmp, alb)); 
    } 
} 
+0

Thank You Сейчас она работает, как и должно быть;) – thalers

Смежные вопросы