在datagrid中使用group时,列会折叠

Dav*_*lle 10 .net wpf grouping datagrid

我有一个数据网格,在其中我显示了几个具有一些列的对象.我添加了对数据网格的分组,现在看起来它不像宽度为'*'的colulmns - 列都被折叠到它们的最小宽度.但是,当我刷新网格时(在添加元素或修改现有元素之后),我可以看到列刷新正常.奇怪的是,我调用相同的函数两次,第一次它不工作,而第二次它没有.

之前:

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
Run Code Online (Sandbox Code Playgroud)

现在数据网格:

<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>
Run Code Online (Sandbox Code Playgroud)

我在网上得到了分组部分,它似乎工作正常,直到我发现了特定的bug.请注意,我添加了Horizo​​ntalAlignment ="Strech",因为我虽然可以解决问题,但很明显它没有.

编辑:忘了提一下,第一次调用ListerDocument函数时,变量完全加载了文档并在构造函数中调用(New)

Tom*_*lek 32

尝试在DataGrid中指定GroupStyle.Panel.原因是默认的GroupStyle.Panel(StackPanel)不适合DataGrid Width"*",列将崩溃.

<GroupStyle.Panel>
  <ItemsPanelTemplate>
    <DataGridRowsPresenter/>
  </ItemsPanelTemplate>
</GroupStyle.Panel>
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢 - 解决了这个问题几个小时,这完全解决了它。 (2认同)