任务应该很简单。我有一个带有“Tapped”偶数处理程序的图像,我想在点击它时播放一个wav文件。
<Image x:Name="Snd_abort_1" Width="100" Height="100" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0" Source="Assets/Tiles/A/abort_1.png" Tapped="Snd_abort_1_Tapped"></Image>
private void Snd_abort_1_Tapped(object sender, TappedRoutedEventArgs e)
{
MediaElement myMediaElement = new MediaElement();
myMediaElement.AutoPlay = false;
myMediaElement.Source = new Uri("ms-appx:///Assets/Sounds/DukeNukem/abort.wav");
myMediaElement.Play();
}
由于某些特殊原因,这不起作用。 我尝试调试点击并触发,但没有错误,没有声音。
我在模拟器和Lumia 930设备上都试过了。
我错过了什么?
答案 0 :(得分:1)
您不需要使用ms-appx:
为文件添加前缀,只需执行
myMediaElement.Source = new Uri("Assets/Sounds/DukeNukem/abort.wav", UriKind.Relative);
myMediaElement.Play();
不幸的是,虽然这是正确的。这种代码隐藏方法仍然无效。因为myMediaElement不是VisualTree的一部分(因为你是动态的)。
要解决此问题,只需将其添加到根网格/面板
即可myMediaElement.Source = new Uri("Assets/Sounds/DukeNukem/abort.wav", UriKind.Relative);
this.ContentPanel.Children.Add(myMediaElement);
myMediaElement.Play();
现在它应该可以很好地适应所有事情。