2014-11-01 1 views
4

이것은 (잘하면) 사소한 또는 매우 간단한 대답이있을 수 있습니다.DataGridTextColumn 헤더 DataTemplate

DataGrid에 대한 사용자 정의 표제를 원한다고 가정합니다. 많은 열이있는 경우

<DataGridTextColumn Binding="{Binding Name}"> 
    <DataGridTextColumn.HeaderTemplate> 
     <DataTemplate> 
      <TextBlock Text="Header Text" TextWrapping="Wrap"/> 
     </DataTemplate> 
    </DataGridTextColumn.HeaderTemplate> 
</DataGridTextColumn> 

그러나, ColumnHeaderTemplate 내 사용자 정의 DataTemplate입니다

<DataGridTextColumn Binding="{Binding Name}"> 
    HeaderTemplate="{StaticResource ColumnHeaderTemplate}" 
</DataGridTextColumn> 

같은 것을 사용할 수 있습니다 덜 복잡하십시오 DataTemplate 그래서 나는 사용할 수 있습니다. 내 질문은 DataTemplate에 '헤더 텍스트'를 전달하는 방법입니다.

답변

9

당신은 TextBlock.Text을 결합하여 할 수 있으며 사용자 정의 TextBlock로 헤더의 ContentTemplate을 변경하여 중 하나 DataGrid의 모든 열 머리글을 위해 할 수있는 다음 바로 표시 할 텍스트 Header을 설정합니다. 또한 자동으로

<TextBlock Text="{Binding}" TextWrapping="Wrap"/> 

위와 같이, 열

<DataGrid ...> 
    <DataGrid.Resources> 
     <Style TargetType="{x:Type DataGridColumnHeader}"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <TextBlock Text="{Binding}" TextWrapping="Wrap"/> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
     </Style> 
    </DataGrid.Resources> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Name}" Header="Header Text"> 
    </DataGrid.Columns> 
</DataGrid>  

나 또한 바인딩을 사용하는 템플릿을 헤더 단지 TextBlock.Text을 변경 열마다 그것을 할 수 생성에 적용되며, 다음 열은 다음과 같이 수 :

<DataGridTextColumn 
    Binding="{Binding Name}" 
    HeaderTemplate="{StaticResource ColumnHeaderTemplate}" 
    Header="Header Text"/> 
+1

정확히 내가 무엇을 찾고 있었습니까. –

+0

문제는 @ JamesHirschorn입니다. 다행히 도왔다. – dkozl

관련 문제