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();
}
}