mediended 事件的触发是否有任何默认时间间隔?

Is there any default time interval for mediaended event to be fired?

我有一个 WPF 应用程序可以动态加载视频或图像文件(取决于用户的选择,到 MediaElement 控件。 当它是视频并且在结束视频时触发 MediaEnded 事件时它工作正常。 但是当我加载图像时,MediaEnded 事件会在 5 秒内触发。 它是默认值吗?或者我可以以编程方式更改它吗? 是否有任何 属性 来更改此间隔或禁用此类选项? 是否可以让它暂停直到执行特定操作?

我设置了如下属性

MediaControl1.LoadedBehavior = MediaState.Manual;
MediaControl1.UnloadedBehavior = MediaState.Manual;

MediaElement 是 Windows Media Player 的(非常薄的)包装器(或者更确切地说 - 使用 Windows Media Player 使用的相同框架)。如果您在 Windows 媒体播放器中打开图片 - 您会看到它 "play" 像幻灯片一样(即使是一张图片),持续大约 5 秒钟。这就是为什么您会在 5 秒内获得 MediaEnded 事件 - Windows Media Player 在该持续时间内播放包含您的图像的幻灯片。我怀疑是否有办法从 WPF 中更改它(因为它是外部 program\framework 的行为,与 MediaElement 本身无关)而且我不知道如何更改 Windows Media Player(即使有这种方式 - 它也会产生全局影响,您可能不希望以这种方式修改您的客户端计算机)。

要解决您的问题 - 只是不要使用 MediaElement 来显示图像 - 使用类似 Image 的控件。如果您确实有充分的理由这样做 - 您可以在加载 "slideshow" 后使用 Pause 方法暂停 MediaElement,那么它不会触发 MediaEnded 事件。总而言之 - 我无法想象任何你真的必须对图像使用 MediaElement 的用例。

您可以在加载图像时重复媒体。像这样处理 MediaEnded 事件:

void me_MediaEnded(object sender, EventArgs e)
{
    //play video again
    mediaElement.Position = new TimeSpan(0, 0, 1);
    mediaElement.Play();
}

另外看这个。它可能有帮助: