wp7音乐播放器

时间:2013-04-14 14:50:05

标签: c#

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

MediaLibrary lib = new MediaLibrary();
var SongName = (from m in lib.Songs select m.Name).ToList();
listBox1.ItemsSource = SongName;

列表正在填充,我正在使用事件

访问ListBox项目
listBox1_SelectionChanged 

我希望将所选项目转换为Song类型,以便我可以使用MediaPlayer类播放。

正常的类型转换,例如

Song x = (Song)listBox1.SelectedItem;

如何让它发挥作用?

1 个答案:

答案 0 :(得分:1)

您正在选择歌曲名称(字符串)作为数据源类型。正如您所见,您无法通过显式转换将字符串转换为Song类型(如果您真的想要保留字符串类型,则可以在MediaLibrary中执行搜索)。或者,您可以将Song对象本身绑定到ListBox。

MediaLibrary lib = new MediaLibrary();
var SongName = lib.Songs.ToList();
listBox1.ItemsSource = SongName;

然后在你的事件处理程序

Song x = listBox1.SelectedItem as Song;
if(x != null)
   MediaPlayer.Play(x);

如果您确实只想在string中使用ListBox类型,则可以在SelectedChanged事件中执行此类搜索。 (你必须使lib成为一个班级变量)

Song x = lib.Songs.Where(s => s.Name == listbox1.SelectedItem.ToString()).FirstOrDefault();

此方法的主要问题是,如果有两个具有相同名称的轨道,则仅返回第一个轨道。您需要一种区分它们的方法,但其他属性(例如Artist)已从数据源中删除(因为您只使用了歌曲的Name属性)。