2010-02-12 72 views
3

我想将MediaElent上的歌曲从track1.mp3更改为track2.mp3。这里是代码:更改MediaElement中的源代码(SILVERLIGHT)

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

MediaElement更改来源,但不会启动。这段代码可能有什么错误?

回答

5

尝试将MyMediaElement.AutoPlay设置为true,一旦源更改它应播放。您也可以使用MediaElement.SetSource()方法进行调查,该方法使用流而不是uri。

+0

作品!非常感谢你! – Krika 2010-02-16 23:59:28

+0

我不知道为什么和如何,但这似乎工作。谢谢! – 2010-03-02 19:45:51

1

你似乎没有做错任何事情。这里有几个我会尝试的诊断: -

指定track2作为初始文件的工作?

附加到MediaFailed事件,它会被解雇吗?

将TextBlock绑定到CurrentState属性,以观察CurrentState如何更改。

+0

感谢您的回复! MediaFailed事件不会被触发。 我检查了CurrentState属性,当我试图更改跟踪它只是说“已关闭”。 已关闭?那是什么意思?源是correkt。 – Krika 2010-02-13 17:36:50

+0

@ krika02:意味着MediaElement认为它当前不包含媒体。自从你明确地设置它后,有点奇怪。如果你最初特定的track2是否真的可以播放它? – AnthonyWJones 2010-02-13 22:01:52

2

我有同样的问题。我可以在XAML中设置自动播放和源代码,并且它可以工作,但是如果我在代码中更改源代码,它将不会执行任何操作。
我捕获了控件的MediaOpened事件。
问题在于您在更改源代码后立即点击Play(),因此当前状态已关闭。需要几个时钟周期来改变状态。所以,如果你把Play();在那个事件处理程序里面它会工作。

0

您将AutoPlay设置为false,然后在MediaOpened处理程序中执行Play()。人们对此有所暗示,但并不十分确切。您也可以处理MediaFailed事件,以防万一介质由于某种原因无法打开(找不到文件等)。