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

swift

1个回答

写回答

南措

2025-06-17 01:30

+ 关注

AI
AI

在C#的WPF中,我们可以使用MediaElement控件来播放音频和视频文件。当媒体文件播放完成后,MediaElement会触发mediaending事件。在这个事件处理程序中,我们可以实现重复播放媒体文件的功能,而不需要声明新的媒体源。

如何处理mediaending事件

首先,我们需要在XAML文件中添加一个MediaElement控件,并设置其Source属性为我们要播放的媒体文件的路径。然后,我们可以在代码中订阅mediaending事件,如下所示:

csharp

mediaElement.MediaEnded += MediaElement_MediaEnded;

接下来,我们需要在mediaending事件处理程序中实现重复播放媒体文件的逻辑。我们可以通过将MediaElement的Position属性设置为TimeSpan.Zero来使媒体文件从头开始播放,如下所示:

csharp

private void MediaElement_MediaEnded(object sender, RoutedEventArgs e)

{

mediaElement.Position = TimeSpan.Zero;

mediaElement.Play();

}

在这个事件处理程序中,我们首先将Position属性设置为TimeSpan.Zero,这将使媒体文件的播放位置回到起始位置。然后,我们调用Play方法来重新开始播放媒体文件。

完整示例代码

下面是一个完整的示例代码,演示了如何在不声明新源的情况下从mediaending事件处理程序重复播放MediaElement:

xaml

<Window x:Class="MediaElementExample.MAInWindow"</p> XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="MediaElement Example" Height="450" Width="800">

<Grid>

<MediaElement x:Name="mediaElement" Source="media/sample.mp3" />

</Grid>

</Window>

csharp

using System;

using System.Windows;

namespace MediaElementExample

{

public partial class MAInWindow : Window

{

public MAInWindow()

{

InitializeComponent();

mediaElement.MediaEnded += MediaElement_MediaEnded;

}

private void MediaElement_MediaEnded(object sender, RoutedEventArgs e)

{

mediaElement.Position = TimeSpan.Zero;

mediaElement.Play();

}

}

}

在这个示例中,我们在MAInWindow的构造函数中订阅了mediaending事件,并在事件处理程序中实现了重复播放媒体文件的逻辑。

通过使用mediaending事件处理程序,我们可以在不声明新源的情况下重复播放MediaElement控件中的媒体文件。通过将Position属性设置为TimeSpan.Zero并调用Play方法,我们可以使媒体文件从头开始重新播放。这为我们提供了一种简单而有效的方法来实现循环播放的功能。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号