我正在使用 MediaElement 在我的 Metro 应用程序中播放音乐。即使我导航到另一个页面,我也希望音乐继续播放。
在以下线程中还提出了该问题: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); 始终返回 null,即使我尝试访问根页面上的 MediaElemt。
我构建了一个小示例项目来演示。
有任何想法吗 ?提前致谢 !
最好的问候法比安