WindowsPhone MediaElement

时间:2012-03-14 19:15:01

标签: windows-phone-7 audio playback mediaelement

在我的应用程序中,每页有一个MediaElement。导航到此页面时,我会播放语音消息。

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

我已经为MediaElement注册了lsitener MediaOpened:

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

但声音仅在每隔一个页面上播放。
所以它看起来像:Page1(声音) - >第2页(没有声音) - >第3页(声音) - >第4页(不是声音)。 我尝试了一切,但我无法确定导致这种行为的原因。也许它并不重要,但我正在浏览同一个PhoneApplicationPage子类的实例。
有什么想法?
P

1 个答案:

答案 0 :(得分:1)

我解决了这个问题,动态生成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,或者在下一页上播放声音将无法正常工作。