如何正确显示BitmapImage?

时间:2015-01-28 15:40:41

标签: c# .net sql-server wpf listbox

我想在ListBox中显示SQL Server数据库中的一些图像。我将图像从二进制转换为BitmapImage,并且我添加如下:

foreach (var screenshot in screenshots)
{
    ImageListBox.Items.Add(screenshot);
}

输出如下:

Output

如何正确显示图像?

编辑:这是我的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();

1 个答案:

答案 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>