2

aが多くのエントリで埋められて垂直スクロールバーが表示される場合、スクロールビューアでグループヘッダーを非表示にしDataGridたくありません。代わりに、各グループDataGridごとに設定したいと思います。私の場合、常に2つのグループしかないため、0〜2個のスクロールバーがあります。ScrollBar

最小限のサンプルコードは次のとおりです。http ://www.wpftutorial.net/datagrid.html#grouping

Customers = new ListCollectionView(_customers);
Customers.GroupDescriptions.Add(new PropertyGroupDescription("Gender"));

XAML:

<DataGrid ItemsSource="{Binding GroupedCustomers}">
    <DataGrid.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Path=Name}" />
                    </StackPanel>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
            <GroupStyle.ContainerStyle>
                <Style TargetType="{x:Type GroupItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type GroupItem}">
                                <Expander>
                                    <Expander.Header>
                                        <StackPanel Orientation="Horizontal">
                                          <TextBlock Text="{Binding Path=Name}" />
                                          <TextBlock Text="{Binding Path=ItemCount}"/>
                                          <TextBlock Text="Items"/>
                                        </StackPanel>
                                    </Expander.Header>
                                    <ItemsPresenter />
                                </Expander>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </GroupStyle.ContainerStyle>
        </GroupStyle>
    </DataGrid.GroupStyle>
</DataGrid>

その基本的な例でも問題が発生します。ScrollViewerどこかで使う必要があると思いますか?

4

2 に答える 2

5

Change your XAML to the following:

<DataGrid ItemsSource="{Binding GroupedCustomers}">
<DataGrid.GroupStyle>
    <GroupStyle>
        <GroupStyle.HeaderTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Path=Name}" />
                </StackPanel>
            </DataTemplate>
        </GroupStyle.HeaderTemplate>
        <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <Expander>
                                <Expander.Header>
                                    <StackPanel Orientation="Horizontal">
                                      <TextBlock Text="{Binding Path=Name}" />
                                      <TextBlock Text="{Binding Path=ItemCount}"/>
                                      <TextBlock Text="Items"/>
                                    </StackPanel>
                                </Expander.Header>

                                <ScrollViewer Height="100">
                                     <ItemsPresenter/>
                                </ScrollViewer>

                            </Expander>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</DataGrid.GroupStyle>

You still need the DataGrid ScrollBar in-case your groups exceeded the available hight when expanded.

the result is something like this:

Scroll Groups

于 2012-04-28T09:35:19.757 に答える
1

を使用してScrollViewerをラップItemsPresenterExpanderます。

<ScrollViewer>
    <ItemsPresenter />
</ScrollViewer>

VerticalScrollBarforを無効にする必要があるかもしれませんDataGrid:

<DataGrid VerticalScrollBarVisibility="Disabled" />
于 2012-04-28T08:22:13.877 に答える