0

CollectionViewSource を使用すると、ListBoxItem を簡単にグループ化できます。ただし、各グループ ヘッダーには、「名前」データしかありません。ヘッダーにデータを追加するには?

写真のように。

  1. ヘッダーでカスタム コントロールを使用し、それにビューモデルをバインドしたいと考えています。しかし、グループ化の親からビューモデルを取得する方法がわかりません。
  2. そして、<ItemsPresenter/>groupItem の part.if 何かをそれにバインドしたい場合、どうすればよいですか?

と、私のコード:

<ListBox ItemsSource="{Binding Source={StaticResource XamlBookMarks}}"
         ItemTemplate="{StaticResource TemplateBookMark}">
    <ListBox.GroupStyle>
        <GroupStyle ContainerStyle="{StaticResource StyleBookMarkGroup}" />
    </ListBox.GroupStyle>
</ListBox>

 <Style x:Key="StyleWorkSiteGroup" TargetType="{x:Type GroupItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type GroupItem}">
                    <StackPanel>
                        <ContentControl Content="{Binding}" ContentTemplate="{StaticResource TemplateHeader}" />
                        <!--here, i want binding something to ItemsPresenter-->
                        <ItemsPresenter/>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

     <DataTemplate x:Key="TemplateHeader" DataType="{x:Type GroupItem}">
        <DockPanel>
            <DockPanel.Resources>
                <converters:HeaderGetter x:Key="HeaderConverter" />
            </DockPanel.Resources>
            <ContentControl DockPanel.Dock="Top" Content="{Binding Name, Converter={StaticResource HeaderConverter}, ConverterParameter={StaticResource XamlHeaders}}">
                <ContentControl.Resources>
                    <DataTemplate DataType="{x:Type local:GroupOneHeaderViewModel}">
                        <views:GroupOneHeaderView />
                    </DataTemplate>
                    <DataTemplate DataType="{x:Type local:GroupTwoHeaderViewModel}">
                        <views:GroupTwoHeaderView />
                    </DataTemplate>
                </ContentControl.Resources>
            </ContentControl>
        </DockPanel>
    </DataTemplate>

ここに画像の説明を入力

4

1 に答える 1