我正在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}"/>
......以及其他许多事情,但无济于事。有什么建议吗?
答案 0 :(得分:2)
那不仅仅是典型的。发布后不久我就找到了答案......
<TextBlock Text="{Binding Path=Content.Name,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=GroupItem},
Converter={StaticResource MyConverter}}"/>
有时只是实际上询问问题的过程会毫无意义地得出答案。在这种情况下,查看 .NET Reflector 中GroupItem
的源代码就可以了。
希望其他人认为此边缘案例有用。如果GroupItem
直接暴露了一个属性,那将会更好。
对于那些知道更好的方法的人,我仍会给予正确答案。