如何在WPF数据表格列中以编程方式显示图像?

4

我希望在wpf数据表格中动态添加两列,分别是图片和文本列。

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个回答

6
如Anvaka所说,你可以使用DataGridTemplateColumn。在C#中,你可以像这样创建DataGridTemplateColumn,在这里我添加了一个CheckBoxDataGridTemplateColumn中。
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类型的属性,该类集合被分配给DataGridItemsSource


我已经尝试了这段代码。但它对于图像无效。FrameworkElementFactory factory1 = new FrameworkElementFactory(typeof(Image));我还能尝试什么? - dee
1
出现了异常:'Image' 类型必须派生自 FrameworkElement、FrameworkContentElement 或 Visual3D。 - dee
你的代码正在运行。它使生活变得更轻松。非常感谢。 - dee

0

1
嗨,Anvaka,谢谢你的快速回复。你能给我一些例子或代码吗? - dee
你提供的链接包含XAML代码。我需要在后台(C#)中添加列。 - dee

0
如果您想以编程方式设置数据网格列标题中的图像,可以按照以下步骤进行:
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等),或创建一个更复杂的控件模板


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接