Dot-Net
在數據網格中使用組時列折疊
我有一個數據網格,我在其中顯示了幾個帶有一些列的對象。我在數據網格中添加了分組,現在它似乎不喜歡寬度為“*”的列 - 列都折疊到它們的最小寬度。但是,當我刷新網格時(在添加元素或修改現有元素之後),我可以看到列刷新正常。奇怪的是我兩次呼叫同一個函式,第一次它不起作用,而第二次它起作用。
前 :
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 函式時,變數已完全載入文件,並在建構子中呼叫(新)
嘗試在 DataGrid 中指定 GroupStyle.Panel。原因是預設的 GroupStyle.Panel (StackPanel) 不適合 DataGrid 寬度“*”並且列將折疊。
<GroupStyle.Panel> <ItemsPanelTemplate> <DataGridRowsPresenter/> </ItemsPanelTemplate> </GroupStyle.Panel>