C# 如何在UWP上的媒体元素中加载windows音乐库?

C# 如何在UWP上的媒体元素中加载windows音乐库?,c#,uwp,media,C#,Uwp,Media,如何在UWP上的媒体元素中加载windows音乐库?我在媒体元素上制作音乐播放器(不是媒体播放器元素)。我有列表音乐文件,我可以在媒体播放器元素中加载此列表,但无法在媒体元素中加载此列表。用于稍后创建音乐列表加载的代码。 代码生成音乐列表: protected override async void OnNavigatedTo(NavigationEventArgs e) { StorageFolder musicLib = KnownFolders.MusicLib

如何在UWP上的媒体元素中加载windows音乐库?我在媒体元素上制作音乐播放器(不是媒体播放器元素)。我有列表音乐文件,我可以在媒体播放器元素中加载此列表,但无法在媒体元素中加载此列表。用于稍后创建音乐列表加载的代码。 代码生成音乐列表:

protected override async void OnNavigatedTo(NavigationEventArgs e)
    {


        StorageFolder musicLib = KnownFolders.MusicLibrary;
        //file massive
        var files = await musicLib.GetFilesAsync();
        foreach (var file in files)
        {
            var musicProperties = await file.Properties.GetMusicPropertiesAsync();
            var artist = musicProperties.Artist;
            if (artist == "")
                artist = "UnKnown";
            var album = musicProperties.Album;
            if (album == "")
                album = "Unknown";

            SongList.Add((new Song { SongName = file.DisplayName, Artist = artist, Album = album, Path = file.Path }));
            MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(file));
            mplPlaybackList.Items.Add(Item);
        }

        PopulateAlbumAndArtistLists();

        PlayerManager.lvSongsList.ItemsSource = SongList;
        //Load list to mediaplayer element
        meMyPlayer.Source = mplPlaybackList;
    }
无法在媒体元素中加载此列表

设置MediaPlaybackList时,将其传递给MediaElement的播放源,而不是源

.xaml:

<MediaElement x:Name="mediaElement" AutoPlay="True"></MediaElement>

.cs:

受保护的覆盖异步无效OnNavigatedTo(NavigationEventArgs e)
{
_mediaPlaybackList=新的mediaPlaybackList();
SongList=新的ObservableCollection();
StorageFolder musicLib=KnownFolders.MusicLibrary;
//大量归档
var files=wait musicLib.getfileasync();
foreach(文件中的var文件)
{
var musicProperties=await file.Properties.GetMusicPropertiesAsync();
var艺术家=音乐财产。艺术家;
如果(艺术家==“”)
艺术家=“未知”;
var album=musicProperties.album;
如果(相册==“”)
相册=“未知”;
添加((新歌{SongName=file.DisplayName,Artist=Artist,Album=Album,Path=file.Path});
MediaPlaybackItem=新的MediaPlaybackItem(MediaSource.CreateFromStorageFile(文件));
_mediaPlaybackList.Items.Add(Item);
}
mediaElement.SetPlaybackSource(_mediaPlaybackList);
}

请向我们展示您已经尝试过的代码以及您遇到的问题。如果我用媒体元素替换mediaplayerelement,那么就诅咒meMyPlayer.Source=mplPlaybackList;好的,那么我该如何修复这部分代码:
private void lvSongsList\u SelectionChanged(对象发送方,SelectionChangedEventArgs e){MediaPlaybackList mpl2=(MediaPlaybackList)PlayerManager.meMyPlayer.Source;if(lvSongsList.SelectedIndex>=0){mpl2.MoveTo((uint)lvSongsList.SelectedIndex);PlayerManager.meMyPlayer.MediaPlayer.Play();}}
此代码在ListView中选择歌曲。此字符串中的错误:`MediaPlaybackList mpl2=(MediaPlaybackList)PlayerManager.meMyPlayer.Source;`更正后,播放机无法切换歌曲。如果MediaElement不再更新,则可以采用另一种方式,在最小化应用程序时使MediaPlayerElement工作。建议在1607年后使用MediaPlayerElement。所有未来更新都将应用于MediaPlayerElement。因此,目前最好使用MediaPlayerElement而不是MediaElement。MediaPlayerElement在后台不起作用,如果您有工作说明,我将不胜感激。
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    _mediaPlaybackList = new MediaPlaybackList();
    SongList = new ObservableCollection<Song>();
    StorageFolder musicLib = KnownFolders.MusicLibrary;
    //file massive
    var files = await musicLib.GetFilesAsync();
    foreach (var file in files)
    {
        var musicProperties = await file.Properties.GetMusicPropertiesAsync();
        var artist = musicProperties.Artist;
        if (artist == "")
            artist = "UnKnown";
        var album = musicProperties.Album;
        if (album == "")
            album = "Unknown";

        SongList.Add((new Song { SongName = file.DisplayName, Artist = artist, Album = album, Path = file.Path }));
        MediaPlaybackItem Item = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(file));
        _mediaPlaybackList.Items.Add(Item);
    }


    mediaElement.SetPlaybackSource(_mediaPlaybackList);
    }