0

我有一个用于跨页面播放音乐的 MediaElement。因此,我不得不将它作为资源保留在 App.xaml 中。

在我按下 WP 中的 Windows 按钮之前,一切都按预期工作。应用程序被墓碑化,并且 MediaElement 按预期停止播放。在我的 Application_Deactivated 上,我明确调用 Player.Stop()

当我恢复应用程序时会发生此问题。所有其他状态都已恢复,但媒体元素不播放音乐。我可以看到负责音乐的代码受到打击,但没有触发 MediaElement 的 MediaOpened。我错过了一些明显的东西吗?

编辑 [澄清 KeyboardP 的问题]

<Application.Resources>
    <MediaElement x:Name="ME" MediaEnded="RepeatMedia" Volume="1" AutoPlay="False" Height="0" Source="/Sounds/mywave.wav" />
</Application.Resources>

在我的 App.XAML.CS 中,我有一个名为...的方法

    public MediaElement player = null;

    private void InitializeMusic()
    {
        if (App.Current.Resources.Contains("ME"))
        {
            player = App.Current.Resources["ME"] as MediaElement;
        }
        player.MediaOpened += player_MediaOpened;
    }

我再次初始化它...

    // Code to execute when the application is activated (brought to foreground)
    // This code will not execute when the application is first launched
    private void Application_Activated(object sender, ActivatedEventArgs e)
    {
        InitializeMusic();
    }
4

1 回答 1

2

我不知道为什么,但是Source在墓碑化后属性被删除了,所以尝试在后面的代码中重置源代码。

if (App.Current.Resources.Contains("ME"))
{
    player =(MediaElement) App.Current.Resources["ME"] as MediaElement;
    player.Source = new Uri("/Sounds/mywave.wav", UriKind.Relative);
}
于 2013-04-04T10:45:17.417 回答