我正在试着用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;我该如何让它工作呢?
发布于 2013-04-14 23:09:48
您正在选择歌曲名称(字符串)作为数据源类型。正如您所看到的,不能简单地通过显式转换字符串将其转换为Song类型(如果确实希望保留string类型,可以在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);如果您确实希望在ListBox中只包含string类型,那么可以在SelectedChanged事件中执行如下搜索。(您必须将lib设置为类级别变量)
Song x = lib.Songs.Where(s => s.Name == listbox1.SelectedItem.ToString()).FirstOrDefault();这种方法的主要问题是,如果有两个同名的曲目,则只返回第一个曲目。您需要一种方法来区分它们,但是其他属性,比如Artist,已经从您的数据源中删除(因为您只使用了Song的Name属性)。
https://stackoverflow.com/questions/16000323
复制相似问题