我正在使用此代码创建一个显示图像和文本的列,但只显示文本,我做错了什么?
DataGridTemplateColumn col1 = new DataGridTemplateColumn(); col1.Header =" MyHeader&#34 ;;
FrameworkElementFactory factoryStackPanel = new FrameworkElementFactory(typeof(System.Windows.Controls.StackPanel));
factoryStackPanel.SetValue(System.Windows.Controls.StackPanel.OrientationProperty, Orientation.Vertical);
FrameworkElementFactory factoryTextBlock = new FrameworkElementFactory(typeof(System.Windows.Controls.TextBlock));
Binding bindTextBlock = new Binding("[" + i + "]");
factoryTextBlock.SetValue(System.Windows.Controls.TextBlock.TextProperty, bindTextBlock);
factoryTextBlock.SetValue(System.Windows.Controls.TextBlock.TextWrappingProperty, TextWrapping.Wrap);
factoryTextBlock.SetValue(System.Windows.Controls.TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);
FrameworkElementFactory factoryImage = new FrameworkElementFactory(typeof(System.Windows.Controls.Image));
Binding bindImage = new Binding("http://www.pgn.co.id/images/modules/logo_pgn.png");
factoryImage.SetValue(System.Windows.Controls.Image.SourceProperty, bindImage);
factoryStackPanel.AppendChild(factoryImage);
factoryStackPanel.AppendChild(factoryTextBlock);
DataTemplate cellTemplate = new DataTemplate() { VisualTree = factoryStackPanel };
col1.CellTemplate = cellTemplate;
gridViewItens.Columns.Add(col1);
答案 0 :(得分:0)
DataGrid
绑定了某些项目的ObservableCollection
,并且您的项目类具有MyText
和MyImage
等属性,则可以执行以下操作:
<DataGridTemplateColumn Header="My Item">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding MyImage}" />
<TextBlock Text="{Binding MyText}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
答案 1 :(得分:0)
DataGridTemplateColumn使用数据模板,其工作方式与数据模板相同 您之前使用列表控件探索过的功能。 DataGridTemplateColumn的唯一区别是 它允许您定义两个模板:一个用于数据显示(CellTemplate),另一个用于数据编辑(CellEditingTemplate),您很快就会考虑这些模板。这是一个使用模板数据列的示例 将每个产品的缩略图放在网格中:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Stretch="None" Source=
"{Binding Path=ProductImagePath, Converter={StaticResource ImagePathConverter}}">
</Image>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>