在 C# 中更改 Windows Phone 应用程序的 MediaElement 源

Change MediaElement Source for Windows Phone Application in C#

private void Button2_Click(object sender, RoutedEventArgs e)
    {
        Music.Stop();
        var NewSource = new MediaElement { Source = new Uri("/Assets/Audio/Background/cherished.wav") };
        Music.Source = NewSource.Source;
        Music.Play();
    }

我正在制作一个 XAML 应用程序,它需要我通过 C# 动态更改 MediaElement 类型的源。我试着四处寻找一些东西,这将是我能找到的最佳答案,但是它抛出一个异常,因为 newSource 变量为 NULL。

编辑:

将中间两行替换为直接设置 Music.Source 的一行并添加 UriKind.Relative 完成了更改源的工作。

Music.Stop();
Music.Source = new Uri("/Assets/Audio/Background/cherished.wav", UriKind.Relative);
Music.Play();

但是,下一行 Music.Play() 由于某种原因没有播放该文件。如果我再次按下 Button1(单击事件处理程序仅包含 Music.Play(); ),它将开始播放文件,但开头会有一点断断续续。 假设音频文件是 12345,它将播放 1-12345。

试试这个:

  • 为 MediaElement 注册 MediaOpened 事件并将 mediaElement.Play() 放入同一事件中。
  • 要更改 MediaElemnt 的来源,请输入以下代码:

    if (mediaElement.Source != null) { mediaElement.Pause(); mediaElement.Source = 新 Uri("YOUR SOURCE URI",UriKind.Absolute);

    }

  • 它对我有用。