当使用分组的CollectionViewSource作为ListView的源时,有没有办法在ListView.GridView的每个组内重复列标题?
我正在使用http://msdn.microsoft.com/en-us/library/ms754027.aspx的示例,它使用Expander控件来显示每个组。
我希望列标题出现在每个组的扩展器内,而不是在ListView的顶部。
答案 0 :(得分:3)
我没有尝试过这个,但您可以在组头中包含GridViewHeaderRowPresenters:
<GridViewHeaderRowPresenter
DataContext="{Binding View, RelativeSource={RelativeSource FindAncestor,ListView,1}}"
Columns="{Binding Columns}"
ColumnHeaderContainerStyle="{Binding ColumnHeaderContainerStyle}"
ColumnHeaderTemplate="{Binding ColumnHeaderTemplate}"
ColumnHeaderTemplateSelector="{Binding ColumnHeaderTemplateSelector}"
AllowsColumnReorder="{Binding AllowsColumnReorder}"
ColumnHeaderContextMenu="{Binding ColumnHeaderContextMenu}"
ColumnHeaderToolTip="{Binding ColumnHeaderToolTip}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
如果这不起作用,一种确定的方法是添加一个用VisualBrush绘制的Rectangle,它引用GridView顶部的唯一GridViewHeaderRowPresenter。
这可以使用要在Rectangle上使用的附加属性来完成。设置附加属性后,它会注册一个低优先级Dispatcher回调:
Rectangle本身就是这样的:
<Rectangle HorizontalAlignment="Stretch"
Height="{Binding Fill.Visual.RenderHeight}"
my:GridViewHeaderHelper.SearchForHeaderRowPresenterAndSetFill="True" />