Создаю свой медиа плеер на Maui и при создании списка хотел чтобы изображение музыки выводилось рядом. Использую TagLib чтобы из mp3 легко вывести изображение в инете посмотрел что можно использовать MemoryStream но когда создаю несколько экземпляров MemoryStream изображения путаются друг с другом. Непонятно то что почему это всё путается и почему если я обновлю список музыки изображения поменяются снова или встанут на свои места.
Вот мой код для добавления музыки в лист
void MusicinfsAdd(string PathMsc)
{
var filemsc = TagLib.File.Create(PathMsc);
if (filemsc.Tag.Pictures.Length >= 1)
{
var bin = (byte[])(filemsc.Tag.Pictures[0].Data.Data);
var ms = new MemoryStream(bin);
musicinf MusInf = new musicinf { pathtomcs = PathMsc, Artist = filemsc.Tag.FirstAlbumArtist ?? "unknow", MusicName = filemsc.Tag.Title ?? "unknow", MaxTime = Time_Max((int)filemsc.Properties.Duration.TotalSeconds), MusicImg = ImageSource.FromStream(() => ms )};
Musicinfs.Add(MusInf);
}
else
{
musicinf MusInf = new musicinf { pathtomcs = PathMsc, Artist = filemsc.Tag.FirstAlbumArtist ?? "unknow", MusicName = filemsc.Tag.Title ?? "unknow", MaxTime = Time_Max((int)filemsc.Properties.Duration.TotalSeconds), MusicImg = ImageSource.FromFile("musicimg.png") };
Musicinfs.Add(MusInf);
}
}
Вот мой код для выведения листа
void UpdateFileList()
{
filesList.ItemsSource = null;
var music = Directory.GetFiles(pathtomsc, "*mp3") ;
Musicinfs = new List<musicinf> { };
for (int i = 0; i < music.Length; i++)
{
MusicinfsAdd(music[i]);
}
filesList.ItemsSource = Musicinfs;
this.BindingContext = this;
}