WindowsPhone MediaElement - PullRequest
       13

WindowsPhone MediaElement

2 голосов
/ 14 марта 2012

В моем приложении у меня есть один MediaElement на страницу. При переходе на эту страницу я играю голосовое сообщение.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
      base.OnNavigatedTo(e);
      mediaElement.Stop();
      smediaElement.Source = new Uri("res/sounds/" + soundName, UriKind.RelativeOrAbsolute);
}

Я зарегистрировал lsitener MediaOpened для MediaElement:

private void me_MediaOpened(object sender, RoutedEventArgs e)
{
        MediaElement m = (MediaElement)sender;
        m.Play();
}

Но звук воспроизводится только на каждой другой странице.
Так это выглядит так: Page1 (звук) -> Страница2 (без звука) -> Страница3 (звук) -> Страница4 (не звук).
Я попробовал все, и я не могу понять, что может вызвать такое поведение. Может быть, это не важно, но я перемещаюсь по экземплярам того же подкласса PhoneApplicationPage.
Есть идеи?
P

1 Ответ

1 голос
/ 15 марта 2012

Я решил эту проблему, динамически генерируя MediaElement и удаляя его из макета в onNavigatedFrom вот код:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
        base.OnNavigatedTo(e);
        mediaElement = new MediaElement();
        slideSound.Volume = 1;
        LayoutRoot.Children.Add(mediaElement);
        ....
}

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
        base.OnNavigatedFrom(e);
        mediaElement.Stop();
        LayoutRoot.Children.Remove(mediaElement);
        mediaElement = null;
}

Работает отлично. Весьма странно, что вы должны удалить mediaElement со страницы, или на следующей странице воспроизводимый звук будет работать некорректно.

...