Global MediaElement, который продолжает играть после перехода на другую страницу
Я использую MediaElement для воспроизведения музыки в своем приложении метро. Я хочу, чтобы музыка продолжала играть, даже если я перейду на другую страницу.
В следующей теме также задавался этот вопрос: http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/241ba3b4-3e2a-4f9b-a704-87c7b1be7988/
Я сделал то, что предложил JimMan 1) В App.xaml.cs изменен шаблон элемента управления корневого фрейма, чтобы включить 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) В Styles.xaml добавить
<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) Для доступа к MediaElement на странице, к которой осуществляется переход:
DendencyObject rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);
MediaElement rootMediaElement = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0);
Но VisualTreeHelper.GetChild (Window.Current.Content, 0); всегда возвращает ноль, даже если я пытаюсь получить доступ к MediaElemt на корневой странице.
Я построил небольшой пример проекта для демонстрации.
Есть идеи ? Заранее спасибо !
С наилучшими пожеланиями Fabian