Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Silverlight 5中将MediaElements的动态列表添加到StackPanel中?_Silverlight_Itemscontrol_Silverlight 5.0_Mediaelement_Stackpanel - Fatal编程技术网

如何在Silverlight 5中将MediaElements的动态列表添加到StackPanel中?

如何在Silverlight 5中将MediaElements的动态列表添加到StackPanel中?,silverlight,itemscontrol,silverlight-5.0,mediaelement,stackpanel,Silverlight,Itemscontrol,Silverlight 5.0,Mediaelement,Stackpanel,我在C#和Silverlight 5中工作,我试图将从数据库表中检索到的一个或多个音频和/或视频文件显示为字节数组。我决定将这些字节数组转换为可用格式的最佳方法是在我的ViewModel中创建一个ObservableCollection列表,该列表在服务调用期间填充: mediaFiles = new ObservableCollection<MediaElement>(); foreach (FileUpload fu in FileUploadMediaTable) { u

我在C#和Silverlight 5中工作,我试图将从数据库表中检索到的一个或多个音频和/或视频文件显示为字节数组。我决定将这些字节数组转换为可用格式的最佳方法是在我的ViewModel中创建一个ObservableCollection列表,该列表在服务调用期间填充:

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);
   }
}
mediaFiles=newobservetecollection();
foreach(FileUploadMediaTable中的FileUpload fu)
{
使用(MemoryStream ms=新的MemoryStream(fu.bytes,0,fu.bytes.Length))
{
MediaElement me=新的MediaElement();
me.SetSource(ms);
mediaFiles.Add(me);
}
}
现在,我唯一的问题是弄清楚如何将这些媒体元素添加到视图中。我正在考虑使用自定义数据模板创建一个新的ItemsControl,该模板定义用于播放的按钮,该按钮将MediaElement嵌入StackPanel中,但是如何将每个按钮与特定的MediaElement关联


EDIT:当然,我想我可以创建一个字节数组列表,向DataTemplate添加一个MediaElement对象,然后在定义了Bytes2ImageConverter的源中传递字节数组。当然,也许我可以跳过这一步,将MediaElement的源绑定到每个字节数组上创建的MemoryStream对象。我不确定最好的方法是什么(或者这是否可行)。

您可以创建一个模型类,它将包含媒体源(将绑定到MediaElement源属性)和所需的添加数据(标题、作者等)。您可以使用列表框来显示所有这些视频。您应该创建一个项目模板,并将其用于列表框项目。此项目模板将包含一个媒体元素和一个播放/停止按钮,您将在其中绑定一个命令。命令将放置在ViewModel类中,您可以将模型绑定为命令参数。所以,您可以访问应该播放的中间源(模型类)。播放/停止视频怎么样:您可以创建一个媒体元素帮助器,它将包含一个附加的依赖属性(例如:模型类中的isplay)。您将为播放/停止视频绑定真/假值。就这些