UWP:媒体播放项获取视图模型



我的MediaPlaybackList.ShuffledItems里面有10个项目。但是当我尝试使用 uri 将项目转换回 ViewModel 列表(在我的情况下是Music(时,我得到了 null。

为什么?是因为我从本地驱动器加载文件吗?

这是我获取 uri 的方式:

public static async Task<List<Music>> GetRealPlayList()
{
if (PlayList.ShuffleEnabled)
{
if (ShuffledPlayList.Count == 0)
{
foreach (var music in PlayList.ShuffledItems)
{
ShuffledPlayList.Add(await Music.GetMusic(music.Source.Uri.AbsolutePath));
}
}
return ShuffledPlayList;
}
else
return CurrentPlayList;
}

这是我设置项目的方式:

public static async Task SetPlayList(IEnumerable<Music> playlist)
{
if (Helper.SamePlayList(playlist, CurrentPlayList)) return;
PlayList.Items.Clear();
CurrentPlayList.Clear();
foreach (var music in playlist)
{
var item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(await Helper.CurrentFolder.GetFileAsync(music.GetShortPath())));
PlayList.Items.Add(item);
CurrentPlayList.Add(music);
}
}

还有什么方法可以将MediaPlackBackItem转换回视图模型?GetDisplayProperties((。音乐属性没有我想要的一些属性,其中的属性也是空的。

创建媒体源时,可以设置自定义属性以保存其中的文件路径。当您循环遍历PlayList.ShuffledItems时,从自定义属性中获取文件路径。

设置项目:

MediaSource source = MediaSource.CreateFromStorageFile(await Helper.CurrentFolder.GetFileAsync(music.GetShortPath()));
source.CustomProperties.Add("Path", file.Path);
var item = new MediaPlaybackItem(source);

获取音乐类:

foreach (var music in PlayList.ShuffledItems)
{​
MediaSource source = music.Source;​
String path = sour.CustomProperties["Path"].ToString();​
ShuffledPlayList.Add(await Music.GetMusic(path));​
}

最新更新