0

我有一个从 Windows Phone -> Windows 8 Store 应用程序移植的应用程序。我通过我的 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>
4

1 回答 1

4

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

此外,绝对有可能在 Win8 中的 Xaml 中定义 MediaElement,如果添加失败的 Xaml 片段,应该可以找出那里出了什么问题。

于 2013-08-13T21:46:40.843 回答