Options de dimensionnement dans le contrôle DataGrid

Différentes options sont disponibles pour contrôler la façon dont les DataGrid tailles elles-mêmes sont disponibles. Les DataGridlignes et colonnes individuelles de l’objet DataGridpeuvent être définies pour être dimensionner automatiquement sur leur contenu ou sur des valeurs spécifiques. Par défaut, la DataGrid taille de son contenu augmente et se réduit pour s’adapter à la taille de son contenu.

Dimensionnement de DataGrid

Précautions lors de l’utilisation du dimensionnement automatique

Par défaut, les Height propriétés et Width les propriétés de l’objet DataGrid sont définies Double.NaN sur («Auto » en XAML), et elles DataGrid s’ajustent à 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 a Canvas ou StackPanel, l’étendue DataGrid s’étend au-delà des limites visibles du conteneur et des barres de défilement ne s’affiche 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 DataGrid en dehors des limites visibles de votre application à mesure que des lignes sont ajoutées. 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 DataGrid ou de le Height placer dans un conteneur qui limitera son Heightcontenu, tel qu’un Grid. Lorsque la Height valeur est restreinte, elle DataGrid crée uniquement les lignes qui s’intègrent dans ses lignes spécifiées Heightet recycle 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é Description
Height Définit une hauteur spécifique pour le DataGrid.
MaxHeight Définit la limite supérieure pour la hauteur du DataGrid. La DataGrid croissance verticale jusqu’à ce qu’elle atteigne 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 réduction horizontale jusqu’à ce qu’elle atteigne cette largeur.

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

Lignes DataGrid

Par défaut, la propriété d’une DataGridHeight ligne est définie Double.NaN sur ( »Auto » en XAML), et la hauteur de ligne s’étend à 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 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

Utilise DataGrid les valeurs de la structure et de la DataGridLengthDataGridLengthUnitType structure pour spécifier des modes de dimensionnement absolus ou automatiques.

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

Nom Description
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 d’une DataGrid largeur de * et 2*, la première colonne reçoit une partie de l’espace disponible et la deuxième colonne reçoit deux parties de l’espace disponible.

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

Par défaut, la DataGrid.ColumnWidth propriété est définie SizeToHeadersur , et la DataGridColumn.Width propriété est définie sur Auto. Lorsque le mode de dimensionnement est défini Auto ou SizeToCellsque les colonnes augmentent à 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éduit pas une fois que le contenu a fait défiler l’affichage.

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é Description
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. Substitue 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. Substitue 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. Substitue DataGrid.ColumnWidth.

En-têtes de colonne 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 dimensionnent automatiquement 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. Il DataGrid prend également en charge le redimensionnement automatique des lignes et des colonnes en double-cliquant sur le séparateur 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 DataGrid.CanUserResizeRows propriété falsesur .

Voir aussi