我在 Visual Studio 2012 Ultimate 中开发了一个 Windows 8 应用程序,但我遇到了 MediaElement 问题,其中没有触发 MediaOpened 和 MediaEnded 事件。
下面是我的代码:
public static async void PlaySound(string AudioFile, RoutedEventHandler PlayerEnded)
{
Uri audioUri = new Uri("ms-appx:///Assets/" + AudioFile);
StorageFile audioStorage = await StorageFile.GetFileFromApplicationUriAsync(audioUri);
if (audioStorage != null)
{
var stream = await audioStorage.OpenAsync(Windows.Storage.FileAccessMode.Read);
MediaElement player = new MediaElement();
player.AudioCategory = AudioCategory.GameEffects;
player.AutoPlay = false;
player.MediaEnded += PlayerEnded;
player.MediaOpened += new RoutedEventHandler(delegate(Object sender, RoutedEventArgs e)
{
player.Play();
});
player.SetSource(stream, audioStorage.ContentType);
}
}
基本上这将传递一个按钮单击声音文件,播放完成后将调用 this.Frame.Navigate 方法切换到另一个页面。但它不起作用,因为没有任何事件被触发。
如果我设置 AutoPlay = true 那么它可以正常播放,但是事件仍然不会被触发。
任何人都可以看到有什么问题吗?
谢谢你的帮助