WPF Listview-Gruppen wiederholen Spaltenüberschriften
-
27-09-2019 - |
Frage
Gibt es eine Möglichkeit, die Spaltenüberschriften innerhalb jeder Gruppe eines ListView.GridView zu wiederholen, wenn eine gruppierte Collection als Quelle des Listview mit?
Ich bin mit dem Beispiel unter http://msdn.microsoft.com /en-us/library/ms754027.aspx die verwendet einen Expander Steuerung jeder Gruppe anzuzeigen.
Ich mag die Spaltenüberschriften in dem Expander für jede Gruppe erscheinen, anstatt an der Spitze des Listview.
Lösung
Ich habe nicht versucht, aber Sie können in der Lage sein GridViewHeaderRowPresenters in Ihrem Gruppenköpfe enthalten:
<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}"/>
Wenn das nicht funktioniert, ein sicheren Weg, es zu tun ist, um ein Rechteck zu addieren, die mit einem VisualBrush gemalt ist, dass Verweise des ein-und-nur GridViewHeaderRowPresenter an der Spitze des Gridview.
Dies kann mit einer angefügten Eigenschaft erfolgen auf dem Rechteck verwendet werden. Wenn die angeschlossene Eigenschaft festgelegt ist, registriert er einen Rückruf Dispatcher mit niedriger Priorität, dass:
- Scans auf die visuelle Struktur zur Listenansicht
- Suchen nach unten, bis er feststellt, die GridViewHeaderRowPresenter
- Erstellen Sie eine VisualBrush und setzt sie als Füllung für das Rechteck, und
Das Rechteck selbst etwas so sein würde:
<Rectangle HorizontalAlignment="Stretch"
Height="{Binding Fill.Visual.RenderHeight}"
my:GridViewHeaderHelper.SearchForHeaderRowPresenterAndSetFill="True" />