C# 动态制作播放列表

C# 动态制作播放列表,c#,wpf,C#,Wpf,我已经这样做了: mylist[0]=@"D:\media1; mylist[1]=@"D:\media2; mylist[2]=@"D:\media3; for(int i=0;i

我已经这样做了:

mylist[0]=@"D:\media1;
mylist[1]=@"D:\media2;
mylist[2]=@"D:\media3;
for(int i=0;i
但它只播放最后一种媒体。…

问题是它实际上没有播放列表功能,但您可以自己轻松实现。对您的
mediaElement
执行,并播放字符串数组中的下一个元素。我的xaml代码:

for (int i = 0; i < mylist.Length; i++)
        {
            playList.Enqueue(new Uri(mylist[i]));
            mediaelement.play();

        }

C#代码:

公共部分类主窗口:窗口
{
私有字符串[]mylist=新字符串[3];
公共主窗口()
{
初始化组件();
mylist[0]=@“D:\media1”;
mylist[1]=@“D:\media1”;
mylist[2]=@“D:\media1”;
Source=newURI(mylist[0]);
mediaelement.Play();
}
私有void mediaelement_MediaEnded(对象发送方,RoutedEventArgs e)
{
对于(int i=0;i
如果没有可靠地再现问题的好方法,就不可能知道问题的正确答案。但是,假设您的“使播放列表硬编码”版本的代码符合您的要求,我想说的是,您在上面的代码中唯一做错的事情是调用
mediaelement.play()在循环内,而实际上您应该将该语句放在循环后的括号外。如果你需要更多的帮助,改进你的问题。
for (int i = 0; i < mylist.Length; i++)
        {
            playList.Enqueue(new Uri(mylist[i]));
            mediaelement.play();

        }
<Window x:Class="WpfApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="320*"/>
            <RowDefinition Height="50*"/>
        </Grid.RowDefinitions>
        <MediaElement x:Name="mediaelement" Grid.RowSpan="1" LoadedBehavior="Manual" MediaEnded="mediaelement_MediaEnded"/>
        <StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center">
            <Button x:Name="btnPlay" Content="Next" Click="mediaelement_MediaEnded" Width="50" Height="25" Margin="5"/>
        </StackPanel>
    </Grid>
</Window>
public partial class MainWindow : Window
{
    private string[] mylist = new string[3];

    public MainWindow()
    {
        InitializeComponent();
        mylist[0] = @"D:\media1";
        mylist[1] = @"D:\media1";
        mylist[2] = @"D:\media1";
        mediaelement.Source = new Uri(mylist[0]);
        mediaelement.Play();
    }

    private void mediaelement_MediaEnded(object sender, RoutedEventArgs e)
    {
        for (int i = 0; i < mylist.Length - 1; i++)
        {
            Uri current = new Uri(mylist[i]);
            if (mediaelement.Source == current)
            {
                mediaelement.Source = new Uri(mylist[i + 1]);
                break;
            }
        }

        mediaelement.Play();
    }
}