2013-04-14 323 views
2

我想在wp中開發音樂播放器應用程序。 現在,我可以從MediaLibrary中檢索歌曲列表並將其添加到列表框中。wp7音樂播放器

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

名單得到填充,我使用的事件

listBox1_SelectionChanged 

我想選擇的項目要轉換的類型歌曲,這樣我可以播放使用MediaPlayer的訪問列表框項目類。

正常的類型轉換,如

Song x = (Song)listBox1.SelectedItem; 

我如何工作的呢?

回答

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); 

如果你真的想只有在ListBoxstring類型,你可以在你SelectedChanged事件進行這樣的搜索。 (你必須做出lib一類級別的變量)

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

的主要問題用此方法是,如果有兩個軌道具有相同的名稱,只返回第一個。您需要一種區分它們的方法,但其他屬性(如Artist)已從數據源中刪除(因爲您只使用了歌曲的Name屬性)。

+0

得到它的工作。 非常感謝! – user2279701

+0

不客氣:) – keyboardP