c#WPF如何在未声明新来源的情况下从mediaended事件处理程序重复MediaElement播放?

问题描述 投票:8回答:5

我正在WPF中播放视频。我希望它能循环播放,所以我做的是当mediaended事件触发时,我播放了视频。所以这会给我一个循环。问题是为什么我必须再次创建新源?为什么我不能只叫“玩”?

出于某种原因,我不想在XAML中这样做。

看看我的代码段:

string startPath System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);


public Window1()
    {
        InitializeComponent();
        media.Source = new Uri(startPath + @"playlist.wpl");
        media.play();
    }

private void Media_Ended(object sender, EventArgs e)
    {
        media.Source = new Uri(startPath + @"playlist.wpl"); //if i dont put this line, video wont play..seems like it cant get the source
        media.Play();
    }

或是否有一种适当的方法来循环而不在XAML中,而是在这里的.cs文件中?

c# wpf events event-handling mediaelement
5个回答
16
投票

而不是在Media_Ended处理程序的开始处重置Source,而是尝试将Position值重新设置回开始位置。 Position属性是一个TimeSpan,因此您可能想要类似...的内容。

private void Media_Ended(object sender, EventArgs e)
{
    media.Position = TimeSpan.Zero;
    media.Play();
}

8
投票

您甚至不需要将LoadedBehavior设置为Manual


6
投票

我通过设置UnloadedBehavior =“ Manual”和下面的代码来使它正常工作


1
投票

我认为您应该使用此代码:


0
投票

您不必再次设置源。只需将mediaelement的位置设置为media_ended事件的开始位置

© www.soinside.com 2019 - 2024. All rights reserved.