C# 如何在WindowsPhone中的AudioPlaybackAgent之间设置/获取全局变量

C# 如何在WindowsPhone中的AudioPlaybackAgent之间设置/获取全局变量,c#,windows-phone-7,background-audio,C#,Windows Phone 7,Background Audio,我正在尝试使用AudioPlaybackAgent制作一个小半径,正如Microsoft在其示例中所示,我们有一个adudios列表: private static List<AudioTrack> _playList = new List<AudioTrack> { new AudioTrack(new Uri("http://000.000.000.000/radio1.mp3", UriKind.Absolute), "Radio 1", null,

我正在尝试使用
AudioPlaybackAgent
制作一个小半径,正如Microsoft在其示例中所示,我们有一个adudios列表:

private static List<AudioTrack> _playList = new List<AudioTrack>
{
    new AudioTrack(new Uri("http://000.000.000.000/radio1.mp3", UriKind.Absolute),
    "Radio 1", null, null, null, null, EnabledPlayerControls.Pause),

    new AudioTrack(new Uri("http://000.000.000.000/radio2.mp3", UriKind.Absolute), 
    "Radio 2", null, null, null, null, EnabledPlayerControls.Pause)
};

在“变量”中,我想放置一个变量,该变量根据我在主项目中打开的页面而变化。我怎么能做到?我尝试了很多没有出口的东西。Thnks

如果要根据用户正在查看的页面播放音乐,应使用MediaElement控件而不是音频代理。您可以将MediaElement的源设置为您想要的任何内容。您可以使用XAML或代码来执行此操作

<MediaElement x:Name="MyMediaElement" Source="{Binding YourProperty}"/>

MyMediaElement.Source = new Uri(model.YourProperty);
MyMediaElement.Volume = 1;
MyMediaElement.Play();

最后的答案是:如果你不需要在后台使用音频,你可以简单地使用媒体元素,但是如果你想使用它,你不能在后台代理和主项目之间使用公共变量进行交互,你必须使用音频播放器的Tag属性来存储和获取数据,如果这不起作用,你可以试试IsolatedStorge-Mutex。

是的,但我想我不能在后台听,不是吗?正确。但是你需要它在后台播放吗?在后台播放是为了在用户退出应用程序后仍能继续播放音乐。是的,我知道。在我看来,我做不到。我需要通过一个隔离的存储来做。谢谢你的帮助!不完全正确。您可以从页面与BackgroundAudioPlayer对象交互,并从页面编辑曲目。归根结底,你们是否需要背景音频(离开页面时播放相同的音频)以及是否需要播放不同的歌曲。对不起,我听不懂你们的意思。你能给我举个例子吗?你的意思是我必须根据我打开的页面或什么来更改“曲目”。对不起,我的知识太少了。
<MediaElement x:Name="MyMediaElement" Source="{Binding YourProperty}"/>

MyMediaElement.Source = new Uri(model.YourProperty);
MyMediaElement.Volume = 1;
MyMediaElement.Play();
var track = new AudioTrack(
        new Uri(AudioUri),
        "Some song",   // can be an empty string if no song title
        "Some artist", // can be an empty string if no artist name
        null, // album
        null, // album art
        );

BackgroundAudioPlayer.Instance.Track = track;
BackgroundAudioPlayer.Instance.Play();