私はC#とSilverlight 5で作業しており、データベーステーブルからバイト配列として取得された1つ以上のオーディオファイルやビデオファイルを表示しようとしています。これらのバイト配列を使用可能な形式にするための最良の方法は、サービス呼び出し中に入力されるObservableCollectionリストをViewModelに作成することでした。
mediaFiles = new ObservableCollection<MediaElement>();
foreach (FileUpload fu in FileUploadMediaTable)
{
using (MemoryStream ms = new MemoryStream(fu.bytes, 0, fu.bytes.Length))
{
MediaElement me = new MediaElement();
me.SetSource(ms);
mediaFiles.Add(me);
}
}
今、私の唯一の問題は、これらのメディア要素をビューに追加する方法を理解することです。StackPanelにMediaElementsを埋め込む再生用のボタンを定義するカスタムDataTemplateを使用して新しいItemsControlを作成することを考えていましたが、各ボタンをその特定のMediaElementに関連付けるにはどうすればよいですか?
編集:もちろん、バイト配列のリストを作成し、MediaElementオブジェクトをDataTemplateに追加して、Bytes2ImageConverterが定義されたソースにバイト配列を渡すことができると思います。もちろん、そのステップをスキップして、MediaElementのソースを各バイト配列で作成されたMemoryStreamオブジェクトにバインドすることもできます。続行するための最良の方法がわかりません(または、このようなことが可能かどうかもわかりません)。