如何以编程方式在wpf datagrid列中显示图像?

时间:2009-12-23 10:05:55

标签: wpf image datagrid

我想在wpf datagrid中添加两列图像&一个文本列动态。

Xaml代码:

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

代码背后:

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

如何添加图像列?或在列中显示图像?

请建议

Dee

3 个答案:

答案 0 :(得分:5)

正如Anvaka所说,你可以使用DataGridTemplateColumn。 在C#中,您可以添加创建DataGridTemplateColumn,这里我已将CheckBox添加到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);

此处图片是类中ImageSource类型的属性,其中集合已分配给ItemsSource的{​​{1}}。

答案 1 :(得分:0)

使用DataGridTemplateColumn。在Window.Resources中定义单元格模板,并使用FindResource()设置列的CellTemplate属性。

希望这有帮助。

答案 2 :(得分:0)

如果要在DataGrid列HEADER中设置图像, 仅以编程方式,您可以执行以下操作:

ImageSource image = new BitmapImage(new Uri(@"C:/téléchargement.jpg", UriKind.RelativeOrAbsolute));

Style style = new Style(typeof(DataGridColumnHeader));
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(Image));
factory.SetValue(Image.SourceProperty, image);
factory.SetValue(Image.StretchProperty, Stretch.Uniform);
style.Setters.Add(new Setter { Property = TemplateProperty, Value = new ControlTemplate { TargetType = typeof(DataGridColumnHeader), VisualTree = factory } });

DataZone.Columns[5].HeaderStyle = style;

您可以将这种方法用于任何类型(例如TextBlock,Label等),也可以创建更复杂的controlTemplate