0

C# WPF で音楽プレイヤーを作っています。ファイルは、MediaElement のプレイリストとして機能する ListBox に追加されます。リストボックスにパスと拡張子のないファイル名のみを表示するために、Songパスとタイトルのプロパティを持つクラスを作成しました。

私が理解できないのは、MediaElements ソースをSongオブジェクトのパス プロパティに設定する方法です。これにより、ListBox 内の項目をクリックするだけで再生が開始されます。

リストボックスにファイルを追加するために使用するコードは次のとおりです。

        if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            foreach (string file in ofd.FileNames)
            {
                Song songs = new Song(System.IO.Path.GetFileNameWithoutExtension(file), file);
                listBox.Items.Add(songs);                                                                           
            }  
        }
4

1 に答える 1

0

Songファイル名だけでなく、パスもクラスに保存します。次に、アイテムを選択すると、パスがすぐに利用できるようになります。Songクラスには好きなだけプロパティを設定できます。プロパティを使用してDisplayMemberPath表示されるものを制御し、プロパティを使用SelectedValuePathしてコードに返す必要があるアイテムの側面を制御します。この場合、ファイル名を としてDisplayMemberPath、パスをとして使用できますSelectedValuePath

ファイル名だけを保存する必要はありません。パスをコンバーターに渡して表示用のファイル名を抽出できるからです。明らかに、これには処理のオーバーヘッドがあり、ファイル名を保存するために必要な余分なメモリは実際には問題ではありませんが、言及する価値があると思いました.

于 2012-06-09T12:38:19.067 に答える