但這招在 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>
沒有留言:
張貼留言