我在Visual Studio 2012终极版中开发了一个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,那么它可以正常播放,但事件仍然不会被触发。
任何人都可以看到有什么问题吗?
感谢您的帮助
答案 0 :(得分:3)
我认为您的MediaElement需要在可视树中触发。 见http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/f5b9cdba-5521-467d-b838-8420afc68e7f/