Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF MediaElement应用程序的播放列表_C#_Wpf_Mediaelement_Playlist - Fatal编程技术网

C# WPF MediaElement应用程序的播放列表

C# WPF MediaElement应用程序的播放列表,c#,wpf,mediaelement,playlist,C#,Wpf,Mediaelement,Playlist,我正在通过构建WMP类型的应用程序来学习C#和WPF。下面的代码运行良好,从列表框中选择一部电影将在媒体元素中运行它。我遇到的问题是如何在一部电影结束后自动开始下一部电影。多谢各位 提供电影列表的xml文件: <?xml version="1.0" encoding="ISO-8859-1"?> 熊 c:\movies\Bear.wmv 蝴蝶 c:\movies\Butterfly.wmv 湖 c:\movies\Lake.wmv xaml MediaElement有一

我正在通过构建WMP类型的应用程序来学习C#和WPF。下面的代码运行良好,从列表框中选择一部电影将在媒体元素中运行它。我遇到的问题是如何在一部电影结束后自动开始下一部电影。多谢各位

提供电影列表的xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>

熊 c:\movies\Bear.wmv 蝴蝶 c:\movies\Butterfly.wmv 湖 c:\movies\Lake.wmv

xaml



MediaElement有一个MediaEnded事件,发生这种情况时应触发该事件。然后,您可以通过编程选择列表中的下一项,并播放该文件。

谢谢Brian,我目前正在使用MediaEnd停止计时器,但不确定如何使用它移动到下一部电影。我在考虑与IEnumerable或Observablecollection或xmlserializer结合使用的某种循环。我不知道哪一个是最好的,也不知道哪一个只是死路一条。建议和/或示例代码将不胜感激。嘿,如果mediaended事件触发,您不能通过编程在列表框中选择下一个条目吗?是否将listbox选定值映射到mediaelement?因此,我认为更改所选索引会触发listbox chang事件,您可以使用该事件根据所选值更改媒体。。。您就是这样设置的吗?是的,选定的listbox值是mediaelement的源,单击即可正常运行。为了自动化这个“点击”,我想我需要一种方法,用一个整数对xml文件进行索引,以跟踪播放的内容。如何做到这一点是我目前正在研究的。嘿,如果你设置SelectedIndex属性,它不会像你点击它一样触发事件吗。好的,如果没有,那么您可以创建一个方法,将索引传递到该方法中,并让代码和列表框单击使用索引调用该方法。
<Window x:Class="WpfAppPlaylistTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="425">

<Window.Resources>
    <XmlDataProvider x:Key="myMoviesXML"

                         Source="c:\Movies\media1.xml"
                         XPath="media"
        />
</Window.Resources>

<Grid DataContext="{Binding ElementName=movieList, Path=SelectedItem}">
    <ListBox ItemsSource="{Binding Source={StaticResource myMoviesXML}, XPath=//media//movie}" IsSynchronizedWithCurrentItem="True" 
     Name="movieList" HorizontalAlignment="Right" Width="114" Margin="0,48,12,32">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding XPath=title}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <MediaElement Source="{Binding XPath=filename}" LoadedBehavior="Play" Name="mediaElement1" Margin="12,26,136,12"  />
</Grid>