这是我的数据网格我想在网格列中显示图像,但它显示的是文本System.Windows.Media.Imaging.BitmapImage
,而不是显示图像。
如何在datagrid列中添加图像?
这就是我的尝试:
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
...........如何使图像显示在数据网格列中?
答案 0 :(得分:2)
确保使用DataGridTemplateColumn
并将图像放入其中。
由于您使用的是字典,请绑定值,例如:
<Image Binding="{Binding Height="25" Width="50" Source="{Binding Value}" />
答案 1 :(得分:0)
我认为您的Column数据类型与itemsource数据类型不匹配。您必须为Grid Column和itemsource创建相同的数据类型Image。 在我的WPF项目中,我使用Images:
制作了我的列数据模板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;
希望这个帮助
答案 2 :(得分:0)
将任何图像添加到Project on Resource文件夹
之后在DataGrid绑定事件中尝试以下编码。在这里,我添加了图像徽标...
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;
}