wpf listViewグループは、列ヘッダーを繰り返します
-
27-09-2019 - |
質問
リストビューのソースとしてグループ化されたCollectionViewSourceを使用する場合、listView.gridViewの各グループ内の列ヘッダーを繰り返す方法はありますか?
ATを使用しています http://msdn.microsoft.com/en-us/library/ms754027.aspx エキスパンダーコントロールを使用して各グループを表示します。
リストビューの上部ではなく、各グループのエキスパンダー内に列ヘッダーを表示したいと思います。
解決
私はこれを試していませんが、あなたのグループヘッダーに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}"/>
それがうまくいかない場合、それを行うための確実な方法の1つは、GridViewの上部にある1つのGridViewHeadErrowPresenterを参照するVisualBrushで塗装された長方形を追加することです。
これは、長方形に使用する添付のプロパティで実行できます。添付のプロパティが設定されると、それは次のような低優先度のディスパッチャーコールバックを登録します。
- 視覚ツリーをリストビューにスキャンします
- gridviewheaderrowpresenterが見つかるまで検索します
- VisualBrushを作成し、長方形の塗りつぶしとして設定し、
長方形自体は次のようなものになります:
<Rectangle HorizontalAlignment="Stretch"
Height="{Binding Fill.Visual.RenderHeight}"
my:GridViewHeaderHelper.SearchForHeaderRowPresenterAndSetFill="True" />
所属していません StackOverflow