我想在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
答案 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