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));
}
我的 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));
}