Задача должна быть простой. У меня есть изображение с "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();
Теперь он должен хорошо играть со всем.