MediaElement Open New Source Behavior
前言 Silverlight 在多媒體的處理中提供了 MediaElement 這個控制項,可以進行影片的播放、聲音的播放等應用。而串流資訊的來源可以是一個網址列,也可以是一個串流來源。但是若來源固定的話這個應用實在很弱,因此大多的時候來源都是可以隨時變動的。今天在做一些測試的時候有個情境是這樣的: 使用者在 ListBox 中選了一個 Item,而選中後會觸發事件讓 MediaElement 的 Source 重新設定來源,然後就可以直接播放新的 Item 的內容 (不同的 Item 表示不同的 Radio 位址)。 問題描述 點選 Listbox 的 Item 後會觸發事件,但是程式執行 MediaElement1.Play() 後卻沒有動作。 分析 根據 MSDN 的官方文件中說明,MediaElement 的 Source 在進行變更之後會針對來源進行驗證或是授權(如果有需要的話),接著就會觸發 MediaOpened 事件,不過接著會進行什麼動作則是依據兩個屬性來決定;AutoPlay, CanPause。 Case 1: 若 AutoPlay 是 True。則MediaElement的Source更改後狀態直接進入 Playing 來播放多媒體。 Case 2: 若 AutoPlay 是 False,CanPause 是 True。則Source更改後狀態會進入 Pause。 Case 3: 若兩個屬性都是 False。則 Source 更改後狀態會進入 Stopped。 因此,若想要使用者點選選單然後立刻播放Radio的話可以這麼做: Solution Solution1: xaml 文件中宣告 MediaElement 與這些屬性 1 MediaElement Height="200" Name="myMediaRadio" Width="300" AutoPlay="True" code-behind檔中這樣寫 ...