MediaElement.MediaEnded事件未触发

时间:2013-08-09 08:20:17

标签: windows vb.net winrt-xaml

我有一个应用程序,我正在从Windows Phone移植 - > Windows 8商店应用。我通过我的App.Xaml.vb播放音乐(这样它可以在我的应用程序中播放并通过CurrentApp进行控制)。这一切都在手机上很棒。当音乐曲目结束时,MediaEnded事件被触发,我的应用程序选择另一首曲目并播放。在Windows 8中,当第一首曲目结束时,应用程序会变为静音。

在Windows 8上,MediaElement.MediaEnded事件不会触发

我设置了我的媒体元素并添加了一个处理程序:

Public WithEvents MusicElement as New MediaElement
[...then in the constructor...]
AddHandler MusicElement.MediaEnded, AddressOf ChangeTrack

音乐播放(使用PlayMusic方法,我认为我不需要发布),但是当音乐结束时,事件不会被触发。

手机版和Windows 8版之间的区别在于我不能出于某种原因将MediaElement控件放在Win8的XAML中 - 它似乎不被允许,所以我在我的代码后面初始化它

我没有使用'背景音频'媒体类型(我听说可能会导致MediaEnded事件出现问题)。

我已确认在启动任何播放之前添加了处理程序。

有什么想法吗?

编辑:App.XAML中的XAML(尝试)代码:

 <Application.Resources>
    <ResourceDictionary>


        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Common/StandardStyles.xaml"/>
            <ResourceDictionary Source="DetectiveStyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <!--<MediaElement x:Name="MusicElement" x:Key="MusicElement" Source="/Sounds/Music/doing-my-best.mp3" AutoPlay="False"/>-->
    </ResourceDictionary>
</Application.Resources>

1 个答案:

答案 0 :(得分:4)

您的MediaElement是否连接到Visual Tree?如果没有,它的事件处理程序通常不会被调用。

此外,绝对可以在Win8中的Xaml中定义MediaElement,如果你添加一个Xaml的片段,那么它应该可以找出那里的错误。