0

我正在自定义分组的外观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>

实际的组标签不是很易读,我想使用一个值转换器来使它更美观。但是我找不到获取此文本并对其进行转换的方法。

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

我试过用ContentPresenter......替换上面的东西

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

<TextBlock Text="{Binding}"/>

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

4

1 回答 1

2

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

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

有时只是实际提出问题的过程会凭空得出答案。在这种情况下,查看.NET ReflectorGroupItem的源代码就可以了。

希望其他人发现这个边缘案例有用。GroupItem不过,如果直接为此暴露一个属性会更好。

我仍然会为任何知道更好的方法的人提供正确的答案。

于 2009-04-14T11:44:14.460 回答