我想在ListBox中显示SQL Server数据库中的一些图像。我将图像从二进制转换为BitmapImage
,并且我添加如下:
foreach (var screenshot in screenshots)
{
ImageListBox.Items.Add(screenshot);
}
输出如下:
如何正确显示图像?
编辑:这是我的xaml代码:
<ListBox Name="ImageListBox">
</ListBox>
编辑2:
这就是我转换图片的方式:
public BitmapImage ConvertImage(byte[] value)
{
if (value != null && value.Length > 0)
{
using (MemoryStream stream = new MemoryStream(value))
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
return image;
}
}
return null;
}
这是我的疑问:
var screenshots = context
.Error.Include(_ => _.ErrorScreenshots)
.First(_ => _.Id == selectedError.Id)
.Error
.Select(_ => new { Image = ConvertImage(_.Screenshot) })
.ToArray();
答案 0 :(得分:2)
ListBox将默认使用其toString()方法显示对象。在你的情况下,你最终得到&#34; Image = System.Windows.Media.Bitmap.Image&#34;
为了指示每个项目应显示为Image对象,请指定ItemTemplate。
<ListBox Name="ImageListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<Image Source="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>