Dot-Net

在數據網格中使用組時列折疊

  • February 9, 2016

我有一個數據網格,我在其中顯示了幾個帶有一些列的對象。我在數據網格中添加了分組,現在它似乎不喜歡寬度為“*”的列 - 列都折疊到它們的最小寬度。但是,當我刷新網格時(在添加元素或修改現有元素之後),我可以看到列刷新正常。奇怪的是我兩次呼叫同一個函式,第一次它不起作用,而第二次它起作用。

前 :

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>

我在網上找到了分組部分,它似乎工作得很好,直到我發現了那個特別的錯誤。請注意,我添加了 Horizo​​ntalAlignment =“Strech” 因為我雖然它可能會解決問題,但顯然它沒有。

編輯:忘了提,我第一次呼叫 ListerDocument 函式時,變數已完全載入文件,並在建構子中呼叫(新)

嘗試在 DataGrid 中指定 GroupStyle.Panel。原因是預設的 GroupStyle.Panel (StackPanel) 不適合 DataGrid 寬度“*”並且列將折疊。

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

引用自:https://stackoverflow.com/questions/6387609