Как программно отобразить изображение в столбце сетки данных wpf?

Я хочу добавить два столбца в таблицу данных 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

2 ответа

Решение

Как сказала Анвака, вы можете использовать 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 из DataGrid,

Используйте DataGridTemplateColumn. Определить шаблон ячейки в Window.Resources и использовать FindResource() для установки столбца CellTemplate имущество.

Надеюсь это поможет.

Если вы хотите установить изображение в заголовке столбца DataGrid только программно, вы можете выполнить следующее:

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.

Другие вопросы по тегам