Windows 8存储应用程序MediaElement事件未触发

时间:2012-11-15 10:58:21

标签: c# audio windows-8 app-store media

我在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,那么它可以正常播放,但事件仍然不会被触发。

任何人都可以看到有什么问题吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:3)