2009-04-14 3 views
0

Je personnalise l'apparence du regroupement dans un ListBox. En ListBox.Resources, je l'ai déclaré quelque chose comme (formatage enlevé):Accès à un texte WPF GroupItem pour conversion dans un modèle

<Style TargetType="{x:Type GroupItem}"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type GroupItem}"> 
     <StackPanel Orientation="Vertical"> 
      <!-- Group label --> 
      <ContentPresenter /> 
      <!-- Items in group --> 
      <ItemsPresenter /> 
     </StackPanel> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

L'étiquette réelle du groupe n'est pas très lisible et je voudrais utiliser un convertisseur de valeur pour le rendre plus présentable. Cependant je ne peux pas trouver un moyen d'obtenir ce texte et de le convertir. Je pense qu'un Binding permettrait d'utiliser un convertisseur.

J'ai essayé de remplacer le ContentPresenter ci-dessus avec des gens ...

<TextBlock Text="{TemplateBinding Content}"/> 

<TextBlock Text="{Binding}"/> 

... et de nombreuses autres choses, mais en vain. Aucune suggestion?

Répondre

2

Eh bien, ce n'est pas typique. J'ai trouvé la réponse peu après la publication ...

<TextBlock Text="{Binding Path=Content.Name, 
    RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=GroupItem}, 
    Converter={StaticResource MyConverter}}"/> 

Parfois, juste le processus de fait demander la question tire la réponse de l'air mince. Dans ce cas, en regardant le code source de GroupItem en .NET Reflector a fait l'affaire.

Espérons que quelqu'un d'autre trouve ce cas utile utile. Pourtant, il serait beaucoup plus agréable si GroupItem exposé une propriété pour cela directement.

Je vais toujours accorder une réponse correcte à quiconque connaît une façon plus agréable de le faire.

Questions connexes