任务应该很简单。我有一个带有“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设备上进行了尝试。
我错过了什么?
最佳答案
您不需要使用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();
现在,它应该可以很好地处理所有事情。