c# - UWP:MediaPlaybackItem 获取 ViewModel
问题描述
我MediaPlaybackList.ShuffledItems
的里面有 10 件物品。Music
但是,当我尝试使用 uri将项目转换回 ViewModel 列表(在我的情况下是)时,我得到了 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
,从 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));
}
推荐阅读
- powershell - 如何在 PowerShell 中替换 XML 值
- css - 图片未在 Shiny 应用程序中作为背景出现
- x86 - Intel 引脚修改指令地址
- java - 如何通过连接下划线(_)来获取 Json 值
- python - 编写 PowerShell 基准测试命令脚本
- flutter - Flutter - 在 MaterialApp 中覆盖 HeroController 可能吗?
- react-native - 反应原生渲染 foreach 循环
- python - tensowflow keras - model.predict 给出所有相同的输出
- bash - 通过 docker 无法 cd 进入现有目录的 bash 脚本
- python - 为什么 python 允许在不存在的索引处插入,但在访问时会抛出错误?