2010-12-01 22 views
0

Je sais qu'il n'est pas implicitement possible de lier du texte à un en-tête DataGrid via Dynamically setting the Header text of a Silverlight DataGrid Column, mais je suivais certains exemples de code en ligne pour substituer un TextBlock pour l'en-tête. Cependant, peu importe ce que je fais, le texte auquel je suis lié n'apparaîtra pas.Liaison DataGridHeader ContentTemplate dans Silverlight

Mon XML de mon avis:

<dg:DataGridTextColumn Binding="{Binding Path=UnitKey}" IsReadOnly="True"> 
<dg:DataGridTextColumn.HeaderStyle> 
    <Style TargetType="dataprimitives:DataGridColumnHeader"> 
    <Setter Property="ContentTemplate"> 
    <Setter.Value> 
    <DataTemplate> 
     <TextBlock Text="{Binding Path=KeyListName}"/> 
    </DataTemplate> 
    </Setter.Value> 
    </Setter> 
    </Style> 
</dg:DataGridTextColumn.HeaderStyle> 
</dg:DataGridTextColumn> 

Mon C# de ma vue Modèle:

public string KeyListName 
    { 
     get { return keyListName; } 
     set 
     { 
      keyListName = value; 
      raisePropertyChanged("KeyListName"); 
     } 
    } 

Je ne peux pas comprendre ce que je .. négligé Merci d'avance pour votre aide!

+0

Essayez d'utiliser un DataGridTemplateColumn au lieu d'un DataGridTextColumn – dparker

+0

J'utilisais un TemplateColumn à l'origine, mais il a perdu son style visuel. – Evan

Répondre

0

mettre un DataContext dans votre TextBlock

<TextBlock DataContext="" Text="{Binding Path=KeyListName}"/> 

OU

Si elles ont la même datacontext avec votre UnitKey

<dg:DataGridTextColumn x:Name="dgColumnUnit" Binding="{Binding Path=UnitKey}" IsReadOnly="True"> 

La raison pour laquelle sa ne lie pas parce que le parent qui est votre DataGridTextColumn a été binded déjà, essayez de déboguer et jeter un oeil à votre fenêtre de sortie il invite que listeclé ne peut pas être