Partager via


Options de dimensionnement dans le contrôle DataGrid

Différentes options sont disponibles pour contrôler la façon dont DataGrid se dimensionne. Les DataGrid, ainsi que les lignes et colonnes individuelles dans l’objet DataGrid, peuvent être définis pour être dimensionnés automatiquement selon leur contenu ou selon des valeurs spécifiques. Par défaut, la DataGrid s'agrandit et se rétrécit pour s'adapter à la taille de son contenu.

Dimensionnement de DataGrid

Précautions lors de l’utilisation du dimensionnement automatique

Par défaut, les propriétés Height et Width de l'objet DataGrid sont définies sur Double.NaNAuto » en XAML), et le DataGrid s'ajustera à la taille de son contenu.

Lorsqu’il est placé à l’intérieur d’un conteneur qui ne limite pas la taille de ses enfants, par exemple un Canvas ou un StackPanel, l'élément DataGrid s’étend au-delà des limites visibles du conteneur et les barres de défilement ne s'affichent pas. Cette condition a à la fois des implications en termes d’utilisation et de performances.

Lorsqu’il est lié à un jeu de données, si l’élément HeightDataGrid n’est pas limité, il continue d’ajouter une ligne pour chaque élément de données dans le jeu de données lié. Cela peut entraîner l’expansion de DataGrid en dehors des limites visibles de votre application à mesure que des lignes sont ajoutées à votre application. Les DataGrid barres de défilement ne s’affichent pas dans ce cas, car elles Height continuent de croître pour prendre en charge les nouvelles lignes.

Un objet est créé pour chaque ligne dans le DataGrid. Si vous utilisez un jeu de données volumineux et que vous autorisez la DataGrid taille automatique elle-même, la création d’un grand nombre d’objets peut affecter les performances de votre application.

Pour éviter ces problèmes lorsque vous travaillez avec des jeux de données volumineux, il est recommandé de définir spécifiquement l’élément Height ou de le DataGrid placer dans un conteneur qui limitera son Heightcontenu, tel qu’un Grid. Lorsque le Height est restreint, le DataGrid créera uniquement les lignes qui s’intègrent dans sa Height spécifiée, et recyclera ces lignes selon les besoins pour afficher de nouvelles données.

Définition de la taille DataGrid

La DataGrid taille peut être définie automatiquement dans les limites spécifiées, ou la DataGrid taille peut être définie sur une taille spécifique. Le tableau suivant montre les propriétés qui peuvent être définies pour contrôler la DataGrid taille.

Propriété Descriptif
Height Définit une hauteur spécifique pour le DataGrid.
MaxHeight Définit la limite supérieure pour la hauteur du DataGrid. DataGrid croîtra verticalement jusqu'à atteindre cette hauteur.
MinHeight Définit la limite inférieure pour la hauteur du DataGrid. Le DataGrid sera réduit verticalement jusqu’à ce qu’il atteigne cette hauteur.
Width Définit une largeur spécifique pour le DataGrid.
MaxWidth Définit la limite supérieure pour la largeur du DataGrid. Le DataGrid va croître horizontalement jusqu’à ce qu’il atteigne cette largeur.
MinWidth Définit la limite inférieure pour la largeur du DataGrid. La DataGrid se rétrécira horizontalement jusqu’à ce qu’elle atteigne cette largeur.

Dimensionnement des lignes et des en-têtes de ligne

Lignes du DataGrid

Par défaut, la propriété DataGrid d'une ligne Height est définie sur Double.NaN ("Auto" en XAML), et la hauteur de la ligne s'ajustera à la taille de son contenu. La hauteur de toutes les lignes du fichier DataGrid peut être spécifiée en définissant la DataGrid.RowHeight propriété. Les utilisateurs peuvent modifier la hauteur de ligne en faisant glisser les séparateurs d’en-tête de ligne.

En-têtes de ligne du DataGrid

Pour afficher les en-têtes de ligne, la HeadersVisibility propriété doit être définie sur DataGridHeadersVisibility.Row ou DataGridHeadersVisibility.All. Par défaut, les en-têtes de ligne sont affichés et leur taille est automatiquement adaptée à leur contenu. Les en-têtes de ligne peuvent avoir une largeur spécifique en définissant la DataGrid.RowHeaderWidth propriété.

Dimensionnement des colonnes et des en-têtes de colonne

Colonnes DataGrid

Le DataGrid utilise les valeurs de DataGridLength et de la structure DataGridLengthUnitType pour spécifier des modes de dimensionnement absolus ou automatiques.

Le tableau suivant montre les valeurs fournies par la DataGridLengthUnitType structure.

Nom Descriptif
Auto Le mode de dimensionnement automatique par défaut dimensionne les DataGrid colonnes en fonction du contenu des cellules et des en-têtes de colonne.
SizeToCells Le mode de dimensionnement automatique basé sur les cellules dimensionne les DataGrid colonnes en fonction du contenu des cellules de la colonne, et n’inclut pas les en-têtes de colonne.
SizeToHeader Le mode de dimensionnement automatique basé sur l’en-tête dimensionne les DataGrid colonnes en fonction du contenu des en-têtes de colonne uniquement.
Pixel Le mode de dimensionnement basé sur les pixels dimensionne les DataGrid colonnes en fonction de la valeur numérique fournie.
Star Le mode de dimensionnement en étoile est utilisé pour distribuer l’espace disponible par proportions pondérées.

En XAML, les valeurs en étoile sont exprimées sous la forme n* où n représente une valeur numérique. 1* équivaut à *. Par exemple, si deux colonnes dans un DataGrid avaient des largeurs de * et 2*, la première colonne recevrait une partie de l'espace disponible et la deuxième colonne recevrait deux parties de l'espace disponible.

La classe DataGridLengthConverter peut être utilisée pour convertir des données entre des valeurs numériques, des valeurs de chaînes et des valeurs DataGridLength.

Par défaut, la propriété DataGrid.ColumnWidth est définie sur SizeToHeader, et la propriété DataGridColumn.Width est définie sur Auto. Lorsque le mode de dimensionnement est défini sur Auto ou SizeToCells, les colonnes s'ajustent à la largeur de leur contenu visible le plus large. Lors du défilement, ces modes de dimensionnement entraînent l’expansion des colonnes si le contenu supérieur à la taille de colonne actuelle est fait défiler dans l’affichage. La colonne ne se réduira pas après que le contenu soit défilé hors de vue.

Les colonnes de l’objet DataGrid peuvent également être définies sur une taille automatique uniquement dans les limites spécifiées, ou les colonnes peuvent être définies sur une taille spécifique. Le tableau suivant montre les propriétés qui peuvent être définies pour contrôler les tailles de colonne.

Propriété Descriptif
DataGrid.MaxColumnWidth Définit la limite supérieure pour toutes les colonnes du DataGrid.
DataGridColumn.MaxWidth Définit la limite supérieure d’une colonne individuelle. Remplace DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Définit la limite inférieure de toutes les colonnes dans le DataGrid.
DataGridColumn.MinWidth Définit la limite inférieure d’une colonne individuelle. Remplace DataGrid.MinColumnWidth.
DataGrid.ColumnWidth Définit une largeur spécifique pour toutes les colonnes du DataGrid.
DataGridColumn.Width Définit une largeur spécifique pour une colonne individuelle. Remplace DataGrid.ColumnWidth.

Colonnes des en-têtes de DataGrid

Par défaut, DataGrid les en-têtes de colonne sont affichés. Pour masquer les en-têtes de colonne, la HeadersVisibility propriété doit être définie sur DataGridHeadersVisibility.Row ou DataGridHeadersVisibility.None. Par défaut, lorsque les en-têtes de colonne sont affichés, ils s'adaptent automatiquement à la taille de leur contenu. Les en-têtes de colonne peuvent avoir une hauteur spécifique en définissant la DataGrid.ColumnHeaderHeight propriété.

Redimensionnement avec la souris

Les utilisateurs peuvent redimensionner DataGrid des lignes et des colonnes en faisant glisser les séparateurs d’en-tête de ligne ou de colonne. DataGrid prend également en charge le redimensionnement automatique des lignes et des colonnes en double-cliquant sur la bordure d’en-tête de ligne ou de colonne. Pour empêcher un utilisateur de redimensionner des colonnes particulières, définissez la DataGridColumn.CanUserResize propriété false sur les colonnes individuelles. Pour empêcher les utilisateurs de redimensionner toutes les colonnes, définissez la DataGrid.CanUserResizeColumns propriété sur false. Pour empêcher les utilisateurs de redimensionner toutes les lignes, définissez la propriété DataGrid.CanUserResizeRows à false.

Voir aussi