Windows Phone (c#) 用のミュージック プレーヤーを作成しています。ピボットページでアプリを開始することにしました。それらの 1 つはアルバムのリストで、リストの左側にアルバム アートがあります。プロパティを持つクラスを作成しました:
BitmapImage artwork;
Album alb;
そして、バインディング用のビューモデルクラスを作成しました:
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));
}
}
}
}
これを実行すると、アルバム アートはすべて同じです (これは、コレクション内の最後のアルバムのアルバム アートです)。if 条件を削除すると、アルバム アートは、UriSource からのすべてのイメージである必要があります。
最後の画像がすべてのアルバムに設定されている理由がわかりません。