更改MediaElement中的源(SILVERLIGHT)

更改MediaElement中的源(SILVERLIGHT),silverlight,playback,mediaelement,Silverlight,Playback,Mediaelement,我想将MediaElent上的歌曲从track1.mp3更改为track2.mp3。代码如下: MyMediaElement.Stop(); Uri u = new Uri("track2.mp3", UriKind.Relative); MyMediaElement.Source=u; MyMediaElement.Play(); MediaElement更改了源,但只是无法启动。此代码可能有什么问题?您似乎没有做错任何事情。以下是我将尝试的几种诊断方法:- 将track2指定为初始文件是否

我想将MediaElent上的歌曲从track1.mp3更改为track2.mp3。代码如下:

MyMediaElement.Stop();
Uri u = new Uri("track2.mp3", UriKind.Relative);
MyMediaElement.Source=u;
MyMediaElement.Play();

MediaElement更改了源,但只是无法启动。此代码可能有什么问题?

您似乎没有做错任何事情。以下是我将尝试的几种诊断方法:-

将track2指定为初始文件是否起作用

附加到MediaFailed事件,是否触发该事件


将文本块绑定到CurrentState属性以观察CurrentState是如何更改的。

尝试将MyMediaElement.AutoPlay设置为true,只要源更改了它应该播放的内容。您还可以研究使用MediaElement.SetSource()方法,该方法采用流而不是uri。

我也遇到了同样的问题。我可以在XAML中设置autoplay和源代码,它可以工作,但如果我在代码中更改源代码,它将什么也不做。
我捕获了控件的MediaOpen事件。

问题是,它在您更改源代码后立即命中Play(),因此当前状态为关闭。改变状态需要几个时钟周期。所以,如果你把Play()放在;在该事件处理程序中,它将工作。

您将
自动播放设置为
false
,然后在MediaOpen处理程序中执行
Play()
。人们在这里暗示了解决方案,但不是很准确。您也可以处理MediaFailed事件,以防媒体因某种原因无法打开(找不到文件等)。

谢谢您的回复!MediaFailed事件未被激发。我检查了CurrentState属性,当我试图更改轨迹时,它只显示“Closed”。关闭这是什么意思?源是正确的。@krika2:表示MediaElement认为它当前不包含媒体。这有点奇怪,因为你已经清楚地设定了。如果您最初使用特定的track2,它是否真的能够播放它?