在我的应用程序中,每页有一个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(声音)-> Page2(没有声音)-> Page3(声音)-> Page4(没有声音)。
我尝试了一切,但我不知道是什么会导致这种行为。也许这并不重要,但是我正在浏览同一PhoneApplicationPage子类的实例。
有任何想法吗?
P

最佳答案

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

关于windows-phone-7 - WindowsPhone MediaElement,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9708629/

10-13 00:46