1

グループ化された CollectionViewSource を ListView のソースとして使用する場合、ListView.GridView の各グループ内で列ヘッダーを繰り返す方法はありますか?

Expander コントロールを使用して各グループを表示するhttp://msdn.microsoft.com/en-us/library/ms754027.aspxの例を使用しています。

ListView の上部ではなく、各グループのエキスパンダー内に列ヘッダーを表示したいと思います。

4

1 に答える 1

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}"/>

それがうまくいかない場合、確実な方法の 1 つは、GridView の上部にある唯一の GridViewHeaderRowPresenter を参照する VisualBrush で描画される Rectangle を追加することです。

これは、Rectangle で使用される添付プロパティで行うことができます。添付プロパティが設定されると、次の優先度の低い Dispatcher コールバックが登録されます。

  1. ビジュアル ツリーを ListView までスキャンします。
  2. GridViewHeaderRowPresenter が見つかるまで検索します
  3. VisualBrush を構築し、それを Rectangle の Fill として設定します。

Rectangle 自体は次のようになります。

<Rectangle HorizontalAlignment="Stretch"
           Height="{Binding Fill.Visual.RenderHeight}"
           my:GridViewHeaderHelper.SearchForHeaderRowPresenterAndSetFill="True" />
于 2010-06-16T03:03:15.237 に答える