2009-04-14 3 views
0

Ich passe das Aussehen der Gruppierung in einem ListBox an. In ListBox.Resources, ich habe so etwas wie (Formatierung entfernt) erklärt:Zugriff auf einen WPF GroupItem-Text für die Konvertierung in einer Vorlage

<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> 

Die tatsächliche Gruppen-Label ist nicht sehr gut lesbar und ich möchte einen Wert Konverter verwenden, um es mehr vorzeigbar zu machen. Jedoch kann ich keinen Weg finden, diesen Text zu erhalten und ihn zu konvertieren.

Ich denke, dass ein Binding mich einen Konverter verwenden lassen würde.

Ich habe versucht, von der ContentPresenter oben mit Leuten zu ersetzen ...

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

<TextBlock Text="{Binding}"/> 

... und zahlreiche andere Dinge, aber ohne Erfolg. Irgendwelche Vorschläge?

Antwort

2

Nun, das ist nicht typisch. Ich fand kurz die Antwort nach der Einlieferung ...

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

Manchmal nur der Prozess der tatsächlich die Frage zu stellen, die Antwort aus der Luft zieht. In diesem Fall wurde der Quellcode von GroupItem in .NET Reflektor den Trick gemacht.

Hoffe, dass jemand anderes diesen Randfall nützlich findet. Trotzdem wäre es viel schöner, wenn GroupItem direkt eine Eigenschaft dafür freilegt.

Ich werde immer noch eine korrekte Antwort an alle vergeben, die einen besseren Weg kennen, dies zu tun.

Verwandte Themen