2012-09-22 52 views
0

我做了一個DataGridColumnHeader stlye,我想獲得與默認DataGridColumnHeader,所以我這樣做:如何從默認的DataGridColumnHeader派生我自己的DataGridColumnHeaderStyle?

<Style TargetType="{x:Type DataGridColumnHeader}" x:Key="ColumnHeaderStyle" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> 
       <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" > 
        <TextBlock Grid.Column="1" Grid.Row="0" Text="{TemplateBinding Content}" HorizontalAlignment="Center"> 
        </TextBlock> 
        ...... 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

,但它不能正常工作,似乎在DataGrid沒有defaultStyle了,我認爲問題是在上面的代碼中爲DataGridColumnHeader設置模板,但我應該怎麼做?

+0

沒有得到繼承什麼性質? –

+0

例如,我無法通過使用鼠標左鍵單擊2列標題之間的列的寬度了! –

+0

@raha您可以使用'BasedOn'繼承樣式,但不能「繼承」各個樣式屬性......並且覆蓋ControlTemplate屬性將刪除很多默認功能。我建議問你到底在做什麼。 – McGarnagle

回答

0

嗯,我只需要設置模板的ContentTemplate insted!

<Style TargetType="{x:Type DataGridColumnHeader}" x:Key="ColumnHeaderStyle" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"> 
<Setter Property="ContentTemplate"> 
    <Setter.Value> 
     <DataTemplate> 
      <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" > 
       <TextBlock Grid.Column="1" Grid.Row="0" Text="{TemplateBinding Content}" HorizontalAlignment="Center"> 
       </TextBlock> 
       ...... 
      </Grid> 
     </DataTemplate> 
    </Setter.Value> 
</Setter> 

相關問題