但這招在 Windows Store Apps 中目前是行不通的,測試發現若將 MediaElement 放在 Page 的 XAML 以外的地方似乎都不會有作用,測試的流程是先建立一個 Universal App 並在 Shared Project 中建立一個名為 Assets 的資料夾並加入一個 Sound.mp3 的音樂檔案,在 Windows 或 Windows Phone 任一專案中,將 MediaElement 加入 MainPage.xaml 中如下
<StackPanel>
    <MediaElement x:Name="XAMLPlayer"/>
</StackPanel>
在 Page 的 Load 事件中加入
private void OnPageLoaded(object sender, RoutedEventArgs e)
{
    XAMLPlayer.AutoPlay = true;
    XAMLPlayer.Source = new Uri("ms-appx:///Assets/sound.mp3");
}
在這種撰寫方式下應用程式開啟時會正常的播出歌曲,但是如果改成在 MainPage.xaml 以外的部份宣告 MediaElement 來使用,例如以下示範的,加在 MainPage.xaml.cs 中
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }
    public MediaElement Player;
    private void OnPageLoaded(object sender, RoutedEventArgs e)
    {
        Player = new MediaElement();
        Player.AutoPlay = true;
        Player.Source = new Uri("ms-appx:///Assets/sound.mp3");
    }
}
會發現這種撰寫方式是沒作用的,另外我也試過放在 App.xaml 中一樣是沒作用的,所以在 Windows Store Apps 中如果要使用全域的 MediaElement,目前得放在 Page 的 XAML 檔中,並且在這個 Page 加入 Frame,讓這個 Frame 負責應用程式內所有頁面的導覽工作,簡單的範例如下
<Grid>
    <MediaElement x:Name="KKBOXMediaElement" AudioCategory="BackgroundCapableMedia"/>
    <Frame Margin="0" x:Name="MainFrame"/>
</Grid>
 
沒有留言:
張貼留言