2011-06-17 11 views
8

Tengo una cuadrícula de datos en la que se muestran varios objetos con algunas columnas. Agregué la agrupación a la cuadrícula de datos y ahora parece que no le gustan las columnas con un ancho de '*' - las columnas están todas contraídas al ancho mínimo. Sin embargo, cuando actualizo la cuadrícula (después de agregar un elemento o modificar uno existente), puedo ver las columnas refrescando bien. Lo extraño es que llamo a la misma función dos veces y la primera vez que no funciona mientras que la segunda lo hace.Las columnas están contraídas cuando se utiliza el grupo en la cuadrícula de datos

Antes:

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

Después de actualizar una vez

http://www.microage-dil.ca/SO/GridAfter.png Aquí es la función Actualizar:

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

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

Y ahora la cuadrícula de datos:

<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> 

Obtuve la parte de agrupación en la red y parecía funcionar bien hasta que encontré ese error especial. Tenga en cuenta que agregué el HorizontalAlignment = "Strech" porque pensé que podría resolver el problema, pero evidentemente no lo hizo.

EDIT: He olvidado mencionar, la primera vez que llame a la función ListerDocument, la variable se ha cargado completamente con los documentos y se le llama en el constructor (Nuevo)

Respuesta

24

intenta especificar el GroupStyle.Panel en su Cuadrícula de datos. La razón de esto es el hecho de que GroupStyle.Panel (StackPanel) predeterminado no se ajusta al ancho de DataGrid "*" y las columnas colapsarán.

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

Muchas gracias. Hay tantas cosas que debe saber acerca de WPF ... –

+0

Muchas gracias: solucionó ese problema durante horas y esto lo resolvió con exactitud. – WhileTrueSleep

+0

Wow. Muchas gracias. WPF. – JohnB

Cuestiones relacionadas