2010-02-12 74 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事件,以防萬一介質由於某種原因無法打開(找不到文件等)。