【问题标题】:UWP: MediaPlaybackItem get ViewModelUWP:MediaPlaybackItem 获取 ViewModel
【发布时间】:2019-08-24 04:48:54
【问题描述】:

我的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 没有我想要的一些属性,其中的属性也是空的。

【问题讨论】:

    标签: c# uwp uri mediaplayback


    【解决方案1】:

    创建MediaSource时,可以设置CustomProperties将文件路径保存在其中。循环PlayList.ShuffledItems时,从CustomProperties获取文件路径。

    设置项目:

    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));​
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 2021-12-06
      • 1970-01-01
      • 2020-08-23
      • 2012-10-01
      • 2012-06-13
      • 2017-09-07
      • 2017-08-17
      • 2012-12-10
      相关资源
      最近更新 更多