我认为您可以在您的应用程序中使用全局 MediaElement。
要使用全局的全局 MediaElement,您可以按照以下步骤操作。
首先在你的 app.xaml 添加一个 ControlTemplate
<ControlTemplate x:Key="AudioContentTemplate">
<Grid x:Name="MediaElementContainer">
<!-- The media element used to play sound -->
<MediaElement Loaded="OnGlobalMediaLoaded"
Visibility="Collapsed" />
<!-- Added for the normal content -->
<Grid x:Name="ClientArea">
<ContentPresenter />
</Grid>
</Grid>
</ControlTemplate>
其次,在您的 app.xaml.cs 中,您必须声明 Globlal mediaElement 并添加播放和停止的方法。
private MediaElement globalMediaElement = null;
private void OnGlobalMediaLoaded(object sender, RoutedEventArgs e)
{
if (this.globalMediaElement == null)
this.globalMediaElement = sender as MediaElement;
}
public void playMedia(Uri source)
{
this.globalMediaElement.Source = source;
this.globalMediaElement.Play();
}
public void stopMedia()
{
this.globalMediaElement.Stop();
}
app.xaml.cs 末尾的第三个是初始化部分,在这里您使用资源中的模板在系统中注入了全局 Mediaelement:
private void Application_Launching(object sender, LaunchingEventArgs e)
{
RootFrame.Style = (Style)Resources["AudioContentTemplate"];
}
最后你可以在你的代码中调用它
private void btnClassicPuzzle_Click(object sender, System.Windows.RoutedEventArgs e)
{
//play the globlal MediaElement
((App)App.Current).playMedia(new Uri("/Sound/Lionsound.mp3", UriKind.Relative));
NavigationService.Navigate(new Uri("/Menu/SelectPack.xaml", UriKind.Relative));
}