UWP:MediaPlaybackItem 获取 ViewModel

UWP: MediaPlaybackItem get ViewModel

我的 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 转换回 ViewModel? GetDisplayProperties().MusicProperties 没有我想要的一些属性,里面的属性也是空的。

当你创建MediaSource时,你可以设置CustomProperties当你遍历PlayList.ShuffledItems时将文件路径保存在it.And,从中获取文件路径自定义属性。

设置项目:

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

获取音乐 class:

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