2017-01-04 12 views
0

이 코드를 사용하여 이미지와 텍스트를 표시하는 열을 만들지 만 텍스트 만 표시됩니다. 내가 뭘 잘못하고 있습니까?이미지 및 텍스트 WPF로 DataGridTemplateColumn 만들기

DataGridTemplateColumn col1 = new DataGridTemplateColumn(); col1.Header = "MyHeader";

  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); 
+1

그것은 XAML에서이 물건을 할 훨씬 쉽다. –

답변

0

Ed Plunkett와 마찬가지로 XAML에서는 훨씬 더 깨끗합니다.

<DataGridTemplateColumn Header="My Item"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="{Binding MyImage}" /> 
       <TextBlock Text="{Binding MyText}" /> 
      </StackPanel> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
0

DataGridTemplateColumn 같은 방식으로 작동하는 데이터 템플릿을 사용하여 DataGrid가 일부 항목의 ObservableCollection에 바인딩하고 항목 클래스는 당신이 뭔가를 할 수 MyTextMyImage 같은 속성이된다고 가정 데이터 템플릿 기능을 이전에 목록 컨트롤로 살펴 보았습니다. DataGridTemplateColumn의 유일한 차이점은 이므로 데이터 표시 용 (CellTemplate)과 데이터 편집 용 (CellEditingTemplate)의 두 가지 템플릿을 정의 할 수 있습니다. 곧 살펴 보겠습니다. 다음 표에서 각 제품의 썸네일 이미지를 배치 템플릿 데이터 열 를 사용하는 예는 다음과 같습니다

<DataGridTemplateColumn> 
<DataGridTemplateColumn.CellTemplate> 
<DataTemplate> 
<Image Stretch="None" Source= 
"{Binding Path=ProductImagePath, Converter={StaticResource ImagePathConverter}}"> 
</Image> 
</DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn>