在我的应用程序中,每页有一个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
答案 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,或者在下一页上播放声音将无法正常工作。