Global MediaElement que continua jogando depois de navegar para outra página
Eu estou usando um MediaElement para tocar música no meu aplicativo metro. Eu quero que a música continue tocando mesmo se eu navegar para outra página.
No seguinte tópico, essa pergunta também foi feita:http://social.msdn.microsoft.com/Forums/pt-BR/winappswithcsharp/thread/241ba3b4-3e2a-4f9b-a704-87c7b1be7988/
Eu fiz o que JimMan sugeriu 1) Em App.xaml.cs Alterou o modelo de controle do quadro raiz para incluir o MediaElement
var rootFrame = new Frame();
rootFrame.Style = Resources["RootFrameStyle"] as Style;
rootFrame.Navigate(typeof(HomePage), MainViewModel.Instance);
Window.Current.Content = rootFrame;
Window.Current.Activate();
2) Em Styles.xaml add
<Style x:Key="RootFrameStyle" TargetType="Frame">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Frame">
<Grid>
<MediaElement x:Name="MediaPlayer" AudioCategory="BackgroundCapableMedia" AutoPlay="True" />
<ContentPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
3) Para acessar o MediaElement na página navegada para:
DendencyObject rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);
MediaElement rootMediaElement = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0);
Mas VisualTreeHelper.GetChild (Window.Current.Content, 0); sempre retorna null, mesmo se eu tentar acessar o MediaElemt na página raiz.
Eu construí um pequeno projeto de exemplo para demonstrar.
Alguma ideia ? Desde já, obrigado !
Atenciosamente Fabian