我有一个应用程序,我正在从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>
答案 0 :(得分:4)
您的MediaElement是否连接到Visual Tree?如果没有,它的事件处理程序通常不会被调用。
此外,绝对可以在Win8中的Xaml中定义MediaElement,如果你添加一个Xaml的片段,那么它应该可以找出那里的错误。