0

这是我的数据网格,我想在网格列中显示图像,但它显示的是文本System.Windows.Media.Imaging.BitmapImage,而不是显示图像。如何在数据网格列中添加图像?

这是我尝试过的:

Dictionary dict1=new Dictionary < string,object>();

string keyimage="Image";

object a1 = new BitmapImage();

a1=Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Information.Handle, Int32Rect.Empty, null);

dict1.Add(keyimage, a1);

dict1适用Itemsource于数据网格............如何使图像显示在数据网格列中?

4

3 回答 3

2

确保使用 aDataGridTemplateColumn并将图像放入其中。

由于您使用的是字典,因此请绑定value,例如:

<Image Binding="{Binding Height="25" Width="50" Source="{Binding Value}" />
于 2013-01-17T11:49:22.040 回答
0

我想您的 Column 数据类型与 itemsource 数据类型不匹配。您必须为 Grid Column 和 itemsource 创建相同的数据类型 Image。在我的 WPF 项目中,我使用图像制作了列数据模板:

DataTable dtab = new DataTable();
dtab.Columns.Add("imageColumn", typeof(BitmapImage)); 
//Uploading dtab with Images from DataBase

FrameworkElementFactory factory = new FrameworkElementFactory(typeof(Image));
Binding bind = new System.Windows.Data.Binding("imageColumn");
factory.SetValue(Image.SourceProperty, bind);
DataTemplate cellTemplate = new DataTemplate() { VisualTree = factory };
DataGridTemplateColumn imgCol = new DataGridTemplateColumn() 
{
  Header="image",
  CellTemplate = cellTemplate
};
DataGrid dg = new DataGrid();
dg.Columns.Add(imgCol);
dg.ItemsSource = dtab.DefaultView;

希望这有帮助

于 2013-01-17T11:45:12.367 回答
0

将任何图像添加到您的 Project on Resource 文件夹

之后在 DataGrid Bind 事件中尝试以下编码。在这里,我添加了图像徽标...

DataGridViewImageColumn imageColoumn = new DataGridViewImageColumn();
        imageColoumn.HeaderText = "Img";
        imageColoumn.Image = null;
        imageColoumn.Name = "DataPic";
        imageColoumn.Width = 150;
        dataGridView1.Columns.Add(imageColoumn);

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            DataGridViewImageCell cell = row.Cells[1] as DataGridViewImageCell;
            cell.Value = (System.Drawing.Image)Properties.Resources.logo;
        }
于 2013-01-17T11:47:27.127 回答