Global MediaElement, das nach dem Navigieren zu einer anderen Seite weiter abgespielt wird

Ich benutze ein MediaElement, um Musik in meiner Metro-App abzuspielen. Ich möchte, dass die Musik weiter abgespielt wird, auch wenn ich zu einer anderen Seite navigiere.

Im folgenden Thread wurde diese Frage auch gestellt:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/241ba3b4-3e2a-4f9b-a704-87c7b1be7988/

Ich habe getan, was JimMan vorgeschlagen hat. 1) In App.xaml.cs Die Steuerungsvorlage des Root-Frames wurde so geändert, dass das MediaElement enthalten ist

var rootFrame = new Frame();
rootFrame.Style = Resources["RootFrameStyle"] as Style;
rootFrame.Navigate(typeof(HomePage), MainViewModel.Instance);
Window.Current.Content = rootFrame;
Window.Current.Activate();

2) In Styles.xaml hinzufügen

<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) Um auf das MediaElement auf der Seite zuzugreifen, navigieren Sie zu:

DendencyObject rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);     
MediaElement rootMediaElement = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0);

Aber VisualTreeHelper.GetChild (Window.Current.Content, 0); Gibt immer null zurück, auch wenn ich versuche, auf MediaElemt auf der Stammseite zuzugreifen.

Ich habe ein kleines Beispielprojekt gebaut, um es zu demonstrieren.

Beispielprojekt

Irgendwelche Ideen ? Danke im Voraus !

Viele Grüße Fabian

Antworten auf die Frage(1)

Ihre Antwort auf die Frage