我有一个数据网格,其中我显示了几个具有一些列的对象。我添加了对数据网格的分组,现在看起来它不像宽度为'*'的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
现在是datagrid:
<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>
我在网上得到了分组部分,它似乎工作正常,直到我发现了特定的bug。请注意,我添加了HorizontalAlignment =“Strech”,因为我虽然可以解决问题,但很明显它没有。
编辑:忘记提及,第一次调用ListerDocument函数时,变量完全加载了文档并在构造函数中调用(New)答案 0 :(得分:29)
尝试在DataGrid中指定GroupStyle.Panel。原因是默认的GroupStyle.Panel(StackPanel)不适合DataGrid Width“*”,列将崩溃。
<GroupStyle.Panel>
<ItemsPanelTemplate>
<DataGridRowsPresenter/>
</ItemsPanelTemplate>
</GroupStyle.Panel>