MediaElement を使用して、メトロ アプリで音楽を再生しています。別のページに移動しても音楽を再生し続けたいです。
次のスレッドでは、その質問も尋ねられました 。
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 にアクセスしようとしても、常に null を返します。
デモ用に小さなサンプル プロジェクトを作成しました。
何か案は ?前もって感謝します !
よろしくファビアン