Столбцы сворачиваются при использовании группы в сетке данных - PullRequest
10 голосов
/ 17 июня 2011

У меня есть сетка данных, в которой я отображаю несколько объектов с некоторыми столбцами. Я добавил группировку в сетку данных, и теперь кажется, что она не похожа на столбцы с шириной '*' - все столбцы свернуты до минимальной ширины. Однако, когда я обновляю сетку (после добавления элемента или изменения существующего), я вижу, что столбцы обновляются нормально. Странно то, что я вызываю одну и ту же функцию дважды, и в первый раз она не работает, а во второй -

До:

http://www.microage -dil.ca / SO / GridBefore.png

После однократного обновления

http://www.microage -dil.ca / SO / GridAfter.png Вот функция Обновить:

Private Sub ListerDocuments()
    Dim lstCVDocuments As New ListCollectionView(_oLstDocuments)
    lstCVDocuments.GroupDescriptions.Add(New PropertyGroupDescription("TypeFichier"))

    GridDocuments.ItemsSource = lstCVDocuments
    GridDocuments.Items.Refresh()
End Sub

А теперь таблица данных:

<DataGrid x:Name="GridDocuments" Grid.Column="0" ItemsSource="{Binding}" Style="{StaticResource BaseGrid}"  IsTabStop="False">
    <DataGrid.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
                        <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"  HorizontalAlignment="Stretch">
                                            <TextBlock Text="{Binding Path=Name}" FontWeight="Bold" />
                                        </StackPanel>
                                    </Expander.Header>
                                    <ItemsPresenter />
                                </Expander>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </GroupStyle.ContainerStyle>
        </GroupStyle>
    </DataGrid.GroupStyle>
    <DataGrid.Columns>                            
        <DataGridTextColumn Header="Nom" Width="2*"  MinWidth="150"
                            Binding="{Binding NomFichier}"                                               
                            IsReadOnly="True" />
        <DataGridTextColumn Header="Fichier" Width="3*"  MinWidth="150"
                            Binding="{Binding NomFichierOriginal}"                                               
                            IsReadOnly="True" />
        <DataGridTextColumn Header="Extension" Width="65"  MinWidth="50"
                            Binding="{Binding ExtensionFormate}"                                               
                            IsReadOnly="True" />
        <DataGridTextColumn Header="Date d'ajout" Width="80"  MinWidth="80"
                            Binding="{Binding  DateAjout, StringFormat=yyyy-MM-dd}"                                               
                            IsReadOnly="True" />
    </DataGrid.Columns>                        
</DataGrid>

Я получил группировку в сети, и она, казалось, работала нормально, пока не обнаружил особую ошибку. Обратите внимание, что я добавил HorizontalAlignment = "Strech", потому что я думал, что это может решить проблему, но, очевидно, это не так.

РЕДАКТИРОВАТЬ: забыл упомянуть, когда я в первый раз вызываю функцию ListerDocument, переменная полностью загружается с документами и вызывается в конструкторе (New)

1 Ответ

30 голосов
/ 11 августа 2011

Попробуйте указать GroupStyle.Panel в вашей DataGrid. Причиной этого является тот факт, что группа по умолчанию GroupStyle.Panel (StackPanel) не подходит для ширины DataGrid "*" и столбцы свернутся.

<GroupStyle.Panel>
  <ItemsPanelTemplate>
    <DataGridRowsPresenter/>
  </ItemsPanelTemplate>
</GroupStyle.Panel>
...