2016-11-01 11 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を使用する場合は、通常、スタイルではなくウィンドウリソース/データテンプレートを使用します。例:これはあなたが探している答えではない場合、私は謝罪

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

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

そして、あなたのGridViewには、このようなあなたのコラムを設定します。しかし、これは私があなたが述べた目標をいつも達成した方法です。ご質問がある場合はお知らせください。

EDIT:私は決してそのようなバインディングを使用していません。私は例を提供してみましょう:ここ

は項目ソースであるクラスでのブールプロパティにバインドされているチェックボックスを持っているgridviewcolumnためのDataTemplateです:

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

はEDIT 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見ています。

幸運を祈る! DataGridColumnとしてのあなたの存在Binding文句を言わない仕事

0

Visualではありませんので、VisualTreeに参加しないので、あなたはそれを通過することはできません。それは単なる情報保持者であり、他には何もありません。 DataGridColumnHeaderの代わりに、にアクセスするためのプロパティColumnが含まれています。だから、

、両方の性質のためにこれを行う:これはあなたの問題を解決するかどうか教えて

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

してください。

関連する問題