tags:

views:

1208

answers:

2

I want to add two columns in wpf datagrid one image & one text columns dynamically.

Xaml code :

 <Grid><DataGrid AutoGenerateColumns="False" Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="grid" VerticalAlignment="Stretch" Width="Auto" ></DataGrid></Grid>

Code Behind:

 DataGridTextColumn col = new DataGridTextColumn();
  col.Header =Text1;
  col.Binding =Text1;
  grd.Columns.Add(col);

How do I add image column?or show image in the column?

Please suggest

Dee

A: 

Hi Dee,

Use DataGridTemplateColumn. Define cell template in Window.Resources and use FindResource() to set column's CellTemplate property.

Hope this helps.

Anvaka
Hi Anvaka,Thanks for quick reply.Can you please give me some example or code?
dee
Dee, follow the links. Examples already there.
Anvaka
The links provided by you contains xaml code.I need to add the columns in the code behind(c#).
dee
+1  A: 

As Anvaka said, you can Use DataGridTemplateColumn. In C# you can add create DataGridTemplateColumn as this, Here i have added a CheckBox in to the DataGridTemplateColumn.

DataGridTemplateColumn col1 = new DataGridTemplateColumn();
col1.Header = "MyHeader";
FrameworkElementFactory factory1 = new FrameworkElementFactory(typeof(Image));
Binding b1 = new Binding("Picture");
b1.Mode = BindingMode.TwoWay;
factory1.SetValue(Image.SourceProperty, b1);
DataTemplate cellTemplate1 = new DataTemplate();
cellTemplate1.VisualTree = factory1;
col1.CellTemplate = cellTemplate1;
datagrid.Columns.Add(col1);

Here Picture is a property of ImageSource type in the class which collection is assigned to ItemsSource of DataGrid.

viky
I have tried this code.But it doesn't work for Image.FrameworkElementFactory factory1 = new FrameworkElementFactory(typeof(Image)); What else can I try?
dee
i have updated the answer.
viky
Got this exception 'Image' type must derive from FrameworkElement, FrameworkContentElement, or Visual3D.
dee
It is working fine for me. Can you show me your code?
viky
Your code is working.It has make the life easier.Thanks alot.
dee