2

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;

どうすれば機能しますか?

4

1 に答える 1

1

データ ソース タイプとして曲名 (文字列) を選択しています。これまで見てきたように、明示的にキャストするだけでは、文字列を型に変換することはできません (本当に文字列型を保持したい場合はSong、 で検索を実行できます)。または、オブジェクト自体を ListBox にMediaLibraryバインドすることもできます。Song

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

この方法の主な問題は、同じ名前のトラックが 2 つある場合、最初のトラックだけが返されることです。それらを区別する方法が必要ですが、 などの他のプロパティはArtistデータ ソースから削除されています (曲のNameプロパティのみを使用したため)。

于 2013-04-14T15:09:47.713 に答える