2016-11-01 2 views
0

2 행으로 DataGridColumnHeader를 만들려고합니다. 는 나는이 방법을 보이는 것을 원하는 :C# -WPF DataGridColumnHeader in 2 행

enter image description here

HeaderText에와 ID가 지정되는 DataGridColumn에서 AttachedProperties 있습니다.

<Style TargetType="{x:Type DataGridColumnHeader}"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <StackPanel Margin="0"> 
        <Border Margin="0" 
          BorderBrush="Black" 
          BorderThickness="0,0,0,1"> 
         <TextBlock Text="{Binding Path=HeaderText, RelativeSource={RelativeSource AncestorType={x:Type ctrls:MyDataGridColumn}}}" /> 
        </Border> 
        <TextBlock Text="{Binding Path=ID, RelativeSource={RelativeSource AncestorType={x:Type ctrls:MyDataGridColumn}}}" /> 
       </StackPanel> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

예 내 사용자 정의 컬럼 :
<ctrls:MyDataGridColumn HeaderText="some text" ID="1" />

HeaderText에와 ID 늘 표시 ... 어떤 조언 나는 DataGridColumnHeader에 대해 다음 템플릿을 두 속성을 보여주고 싶었어요?

답변

0

DataGridColumns를 사용하여 작업 할 때는 일반적으로 스타일이 아닌 Window Resources/DataTemplates를 사용합니다. 예를 들어 : 이것이 당신이 찾고있는 해답이 아닌 경우 내가 사과

<GridViewColumn CellTemplate="{StaticResource TemplateName}"/> 

:

<Window.Resources> 
    <DataTemplate x:Key="TemplateName"> 
     <insert stackpanel & TextBlocks here/> 
    </DataTemplate> 
</Window.Resources> 

그리고, 당신의 GridView에서이처럼 열을 설정합니다. 그러나 이것이 내가 당신이 진술 한 목표를 항상 성취 한 방법입니다. 궁금한 점이 있으면 알려주세요.

편집 : 나는 그런 바인딩을 사용한 적이 없습니다. 여기

이 항목 소스에있는 클래스에 부울 속성에 바인딩 된 체크 박스가있는 gridviewcolumn에 대한 DataTemplate을이다 : 나를 예를 들어 제공 할 수

<DataTemplate x:Key="IssueTemplate"> 
    <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IssueMe, Mode=TwoWay}"/> 
</DataTemplate> 

편집 2 : 나는 이제 당신이 내 대답을 무의미하게 만드는 머리글에 대해 말하는 것을 보았다. 내 사과. 나는 보통 사례별로 헤더를 설정 : 당신이 스타일을해야하는 경우

<GridViewColumn CellTemplate="{StaticResource IssueTemplate}"> 
    <GridViewColumnHeader HorizontalAlignment="Center"> 
     <StackPanel HorizontalAlignment="Center"> 
      <TextBlock Text="Issue" HorizontalAlignment="Center"/> 
       <Viewbox> 
        <Button Content="Check/Uncheck All" FontSize="6" Margin="5 0 5 0" Command="{Binding CheckClick}"/> 
       </Viewbox> 
     </StackPanel> 
    </GridViewColumnHeader> 
</GridViewColumn> 

후 나는 더 이상 도움을 제공 할 수 두려워. 내 최선의 제안은 바인딩을 살펴 보는 것입니다. 뭔가 그들과 함께 IMO가 보인다.

행운을 빈다.

0

VisualTree에 참여하지 않을 것이다, 그래서 당신이 그것을 통과 할 수 있도록 DataGridColumn으로 현재의 Binding 늘 작업하는 Visual 없습니다. 단지 정보 보유자 일 뿐이며 DataGridColumnHeader 대신 에 액세스 할 수있는 Column 속성이 포함되어 있습니다.

그래서, 두 속성이 작업을 수행 :이 방법으로 문제가 해결 될 경우

<TextBlock Text="{Binding Path=Column.HeaderText, RelativeSource={RelativeSource AncestorType={x:Type DataGridColumnHeader}}}" /> 

은 알려주세요.