MediaElement只能通过xaml播放

时间:2012-11-02 02:41:21

标签: silverlight windows-phone-7

我正在尝试在我的应用中播放背景音乐。最初我有这个:

<Application.Resources> <MediaElement x:Key="AppSoundFile" Name="backgroundMusic" Source="track.mp3" AutoPlay="False" Volume="1" MediaEnded="LoopMusic"/> </Application.Resources>

          private void PlayMusic()
    {
        backgroundMusic = new MediaElement();
        backgroundMusic = (MediaElement)Application.Current.Resources["AppSoundFile"];
        backgroundMusic.AutoPlay = true;
        backgroundMusic.Volume = 5;
        backgroundMusic.Play();

    }

它工作正常。

然而,根据我不允许用户选择自己的音乐这一概念,我的应用被拒绝了。因为如果我把它放在App.xaml中,用户的音乐会自动停止,所以我把代码移到App.xaml.cs中这样:

       private void PlayMusic()
    {
        backgroundMusic = new MediaElement();
        backgroundMusic.Source = new Uri("track.mp3", UriKind.RelativeOrAbsolute);
        backgroundMusic.AutoPlay = true;
        backgroundMusic.Volume = 5;
        backgroundMusic.Play();

    }

现在我自己的音乐根本不会加载。我试图将其设置为内容,返回资源,不同的复制选项,绝对地址,相对地址&amp;网上指示我的约50个其他建议。

无济于事。

还有其他人遇到过这种问题吗?如果是这样,你是如何解决的?非常感谢。提前致谢。

认真的微软,为什么这么难?!

1 个答案:

答案 0 :(得分:2)

感谢Kookiz。我已将PlayMusic从app.xaml.cs移到MainPage.xaml.cs(因为app.xaml没有LayoutRoot)。

        private void PlayMusic()
    {
        backgroundMusic = new MediaElement();
        backgroundMusic.Source = new Uri("track.mp3", UriKind.RelativeOrAbsolute);
        backgroundMusic.AutoPlay = true;
        backgroundMusic.Volume = 1;
        LayoutRoot.Children.Add(backgroundMusic);
        backgroundMusic.Play();

    }

现在音乐正在发挥作用......虽然延迟非常轻微。