首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wp7音乐播放器

wp7音乐播放器
EN

Stack Overflow用户
提问于 2013-04-14 22:50:05
回答 1查看 177关注 0票数 2

我正在试着用wp开发一个音乐播放器应用程序。现在,我可以从MediaLibrary检索歌曲列表并将其添加到列表框中。

代码语言:javascript
复制
MediaLibrary lib = new MediaLibrary();
var SongName = (from m in lib.Songs select m.Name).ToList();
listBox1.ItemsSource = SongName;

该列表正在填充,我正在使用事件访问ListBox项目

代码语言:javascript
复制
listBox1_SelectionChanged 

我希望将选中的项转换为Song类型,这样我就可以使用MediaPlayer类播放它。

正常的类型转换,如

代码语言:javascript
复制
Song x = (Song)listBox1.SelectedItem;

我该如何让它工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-14 23:09:48

您正在选择歌曲名称(字符串)作为数据源类型。正如您所看到的,不能简单地通过显式转换字符串将其转换为Song类型(如果确实希望保留string类型,可以在MediaLibrary中执行搜索)。或者,您可以将Song对象本身绑定到您的ListBox。

代码语言:javascript
复制
MediaLibrary lib = new MediaLibrary();
var SongName = lib.Songs.ToList();
listBox1.ItemsSource = SongName;

然后在您的事件处理程序中

代码语言:javascript
复制
Song x = listBox1.SelectedItem as Song;
if(x != null)
   MediaPlayer.Play(x);

如果您确实希望在ListBox中只包含string类型,那么可以在SelectedChanged事件中执行如下搜索。(您必须将lib设置为类级别变量)

代码语言:javascript
复制
Song x = lib.Songs.Where(s => s.Name == listbox1.SelectedItem.ToString()).FirstOrDefault();

这种方法的主要问题是,如果有两个同名的曲目,则只返回第一个曲目。您需要一种方法来区分它们,但是其他属性,比如Artist,已经从您的数据源中删除(因为您只使用了Song的Name属性)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16000323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档