我想將MediaElent上的歌曲從track1.mp3更改爲track2.mp3。這裏是代碼:更改MediaElement中的源代碼(SILVERLIGHT)
MyMediaElement.Stop();
Uri u = new Uri("track2.mp3", UriKind.Relative);
MyMediaElement.Source=u;
MyMediaElement.Play();
MediaElement更改來源,但不會啓動。這段代碼可能有什麼錯誤?
我想將MediaElent上的歌曲從track1.mp3更改爲track2.mp3。這裏是代碼:更改MediaElement中的源代碼(SILVERLIGHT)
MyMediaElement.Stop();
Uri u = new Uri("track2.mp3", UriKind.Relative);
MyMediaElement.Source=u;
MyMediaElement.Play();
MediaElement更改來源,但不會啓動。這段代碼可能有什麼錯誤?
嘗試將MyMediaElement.AutoPlay設置爲true,一旦源更改它應播放。您也可以使用MediaElement.SetSource()方法進行調查,該方法使用流而不是uri。
你似乎沒有做錯任何事情。這裏有幾個我會嘗試的診斷: -
指定track2作爲初始文件的工作?
附加到MediaFailed事件,它會被解僱嗎?
將TextBlock綁定到CurrentState屬性,以觀察CurrentState如何更改。
感謝您的回覆! MediaFailed事件不會被觸發。 我檢查了CurrentState屬性,當我試圖更改跟蹤它只是說「已關閉」。 已關閉?那是什麼意思?源是correkt。 – Krika 2010-02-13 17:36:50
@ krika02:意味着MediaElement認爲它當前不包含媒體。自從你明確地設置它後,有點奇怪。如果你最初特定的track2是否真的可以播放它? – AnthonyWJones 2010-02-13 22:01:52
我有同樣的問題。我可以在XAML中設置自動播放和源代碼,並且它可以工作,但是如果我在代碼中更改源代碼,它將不會執行任何操作。
我捕獲了控件的MediaOpened事件。
問題在於您在更改源代碼後立即點擊Play(),因此當前狀態已關閉。需要幾個時鐘週期來改變狀態。所以,如果你把Play();在那個事件處理程序裏面它會工作。
您將AutoPlay
設置爲false
,然後在MediaOpened處理程序中執行Play()
。人們對此有所暗示,但並不十分確切。您也可以處理MediaFailed事件,以防萬一介質由於某種原因無法打開(找不到文件等)。
作品!非常感謝你! – Krika 2010-02-16 23:59:28
我不知道爲什麼和如何,但這似乎工作。謝謝! – 2010-03-02 19:45:51