繁体   English   中英

如何在 UWP App 中从 ListView 播放选定的歌曲

[英]How to play a selected song from ListView in UWP App

我是 UWP 开发的新手,并尝试播放在我的ListView中显示的歌曲。 我正在编写的应用程序适用于在树莓派 pi3 上运行的 Windows IoT Core。

所以基本上现在发生的事情是当我 select 从我的ListView中播放歌曲并点击播放按钮时没有任何反应? 我想我需要让MediaPlayer知道选择了哪首歌并播放那首歌?

这是我正在使用的代码:

XAML:

<MediaElement x:Name="mediaPlaylist" AreTransportControlsEnabled="True" Margin="389,-10,10,10">
        <MediaElement.TransportControls>
            <MediaTransportControls IsZoomEnabled="False" IsZoomButtonVisible='False' IsSeekBarVisible="True" IsSeekEnabled="True" IsFullWindowButtonVisible="False" IsStopButtonVisible="True"/>
        </MediaElement.TransportControls>
</MediaElement>

<ListView
         x:Name="SelectSong" 
        Margin="389,28,10,113"
        FontStyle="Oblique"
        FontWeight="Bold"
        Background="DarkGreen"
        ItemClick="SongClicked"
        IsItemClickEnabled="True"
         />

C#:

public MainPage()
    {
        this.InitializeComponent();
        _ = InitFolderAsync();

    }

private async Task InitFolderAsync()
    {
        var files = await Windows.Storage.KnownFolders.MusicLibrary.GetFilesAsync();
        foreach (StorageFile item in files)
        {
            SelectSong.Items.Add(item.Name.ToString());
        }
    }

private async void SongClicked(object sender, ItemClickEventArgs e)
    {
        var file = e.ClickedItem as StorageFile;
        if (file != null)
        {
            var stream = await file.OpenReadAsync();
            mediaPlaylist.SetSource(stream, file.ContentType);
            mediaPlaylist.Play();
        }
    }

我想有这样一个人可以 select 一首歌曲并播放它或循环播放所有歌曲。

谢谢

如何在 UWP App 中从 ListView 播放选定的歌曲

请检查这一行SelectSong.Items.Add(item.Name.ToString()); 您只需将文件名添加到 listview 项目,而不是文件,因此您无法使用var file = e.ClickedItem as StorageFile获取文件。

我们需要编辑SongClicked并获取带有陈词滥调的音乐文件,如下所示。

private async void SongClicked(object sender, ItemClickEventArgs e)
{
    var file = await  KnownFolders.MusicLibrary.GetFileAsync(e.ClickedItem.ToString());

    if (file != null)
    {
        var stream = await file.OpenReadAsync();
        mediaPlaylist.SetSource(stream, file.ContentType);
        mediaPlaylist.Play();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM