访问WPF GroupItem文本以在模板中进行转换

时间:2009-04-14 11:35:46

标签: wpf listbox templates grouping

我正在ListBox自定义分组的外观。在ListBox.Resources中,我已经声明了(格式化已删除):

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

实际的组标签不是很易读,我想使用值转换器使其更具可呈现性。但是我找不到获取此文本并转换它的方法。

我认为Binding会让我使用转换器。

我尝试用以下内容替换上面的ContentPresenter

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

<TextBlock Text="{Binding}"/>

......以及其他许多事情,但无济于事。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

那不仅仅是典型的。发布后不久我就找到了答案......

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

有时只是实际上询问问题的过程会毫无意义地得出答案。在这种情况下,查看 .NET Reflector GroupItem的源代码就可以了。

希望其他人认为此边缘案例有用。如果GroupItem直接暴露了一个属性,那将会更好。

对于那些知道更好的方法的人,我仍会给予正确答案。