任务应该很简单。我有一个带有“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();

现在,它应该可以很好地处理所有事情。

10-08 08:12