当使用分组的 CollectionViewSource 作为 ListView 的源时,有没有办法在 ListView.GridView 的每组内重复列标题?
我正在使用http://msdn.microsoft.com/en-us/library/ms754027.aspx上的示例,它使用 Expander 控件来显示每个组。
我希望列标题出现在每个组的扩展器内,而不是在 ListView 的顶部。
当使用分组的 CollectionViewSource 作为 ListView 的源时,有没有办法在 ListView.GridView 的每组内重复列标题?
我正在使用http://msdn.microsoft.com/en-us/library/ms754027.aspx上的示例,它使用 Expander 控件来显示每个组。
我希望列标题出现在每个组的扩展器内,而不是在 ListView 的顶部。
我还没有尝试过,但您可以在组标题中包含 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,该 VisualBrush 引用 GridView 顶部的唯一 GridViewHeaderRowPresenter。
这可以通过要在 Rectangle 上使用的附加属性来完成。设置附加属性后,它会注册一个低优先级的 Dispatcher 回调:
矩形本身将是这样的:
<Rectangle HorizontalAlignment="Stretch"
Height="{Binding Fill.Visual.RenderHeight}"
my:GridViewHeaderHelper.SearchForHeaderRowPresenterAndSetFill="True" />