我有一个小型的Silverlight应用程序,可以从URL下载所需的所有图像和文本,如下所示:
if (dataItem.Kind == DataItemKind.BitmapImage)
{
WebClient webClientBitmapImageLoader = new WebClient();
webClientBitmapImageLoader.OpenReadCompleted += new OpenReadCompletedEventHandler(webClientBitmapImageLoader_OpenReadCompleted);
webClientBitmapImageLoader.OpenReadAsync(new Uri(dataItem.SourceUri, UriKind.Absolute), dataItem);
}
else if (dataItem.Kind == DataItemKind.TextFile)
{
WebClient webClientTextFileLoader = new WebClient();
webClientTextFileLoader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClientTextFileLoader_DownloadStringCompleted);
webClientTextFileLoader.DownloadStringAsync(new Uri(dataItem.SourceUri, UriKind.Absolute), dataItem);
}
和
void webClientBitmapImageLoader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(e.Result);
DataItem dataItem = e.UserState as DataItem;
CompleteItemLoadedProcess(dataItem, bitmapImage);
}
void webClientTextFileLoader_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
DataItem dataItem = e.UserState as DataItem;
string textFileContent = e.Result.ForceWindowLineBreaks();
CompleteItemLoadedProcess(dataItem, textFileContent);
}
然后将每个图像和文本文件放在字典中,以便应用程序可以随时访问它们。 效果很好。
现在我想对 mp3 文件做同样的事情,但我在网上找到的关于在Silverlight中播放mp3文件的所有信息都显示了如何嵌入在< strong> .xap 文件,我不想这样做,因为我无法像上面那样动态下载动态。
如何在Silverlight中下载和播放mp3文件,就像我下载并显示图像和文字一样?
答案 0 :(得分:1)
您可以将MP3下载为二进制流并将结果存储在字节数组中。它将存储在你的字典中的这个字节数组。
如果要将字节数组分配给MediaElement,可以使用以下代码: -
void SetMediaElementSource(MediaElement me, byte[] mp3)
{
me.SetSource(new MemoryStream(mp3));
}