Opzioni di ridimensionamento nel controllo DataGrid

Sono disponibili varie opzioni per controllare le DataGrid dimensioni stesse. Le DataGridsingole righe e le colonne di , e in DataGrid, possono essere impostate automaticamente sul relativo contenuto o possono essere impostate su valori specifici. Per impostazione predefinita, l'oggetto DataGrid crescerà e si ridurrà in base alle dimensioni del contenuto.

Ridimensionamento di DataGrid

Attenzione quando si usa il ridimensionamento automatico

Per impostazione predefinita, le Height proprietà e Width di DataGrid sono impostate su Double.NaN ("Auto" in XAML) e le DataGrid modificheranno alle dimensioni del relativo contenuto.

Se posizionato all'interno di un contenitore che non limita le dimensioni dei relativi elementi figlio, ad esempio o CanvasStackPanel, l'oggetto DataGrid si estende oltre i limiti visibili del contenitore e le barre di scorrimento non verranno visualizzate. Questa condizione ha implicazioni sia per l'usabilità che per le prestazioni.

Se associato a un set di dati, se l'oggetto HeightDataGrid di non è limitato, continuerà ad aggiungere una riga per ogni elemento di dati nel set di dati associato. Ciò può causare l'aumento dell'oggetto DataGrid all'esterno dei limiti visibili dell'applicazione man mano che vengono aggiunte righe. In DataGrid questo caso le barre di scorrimento non verranno visualizzate perché Height continueranno a crescere per contenere le nuove righe.

Viene creato un oggetto per ogni riga nell'oggetto DataGrid. Se si usa un set di dati di grandi dimensioni e si consente DataGrid di ridimensionare automaticamente se stesso, la creazione di un numero elevato di oggetti può influire sulle prestazioni dell'applicazione.

Per evitare questi problemi quando si lavora con set di dati di grandi dimensioni, è consigliabile impostare specificamente l'oggetto dell'oggetto HeightDataGrid o inserirlo in un contenitore che ne limiterà Height, ad esempio .Grid Quando l'oggetto Height è limitato, DataGrid crea solo le righe che verranno incluse all'interno dell'oggetto specificato Heighte le riciclerà in base alle esigenze per visualizzare nuovi dati.

Impostazione delle dimensioni di DataGrid

DataGrid Può essere impostato su dimensioni automatiche entro i limiti specificati oppure DataGrid può essere impostato su una dimensione specifica. Nella tabella seguente vengono illustrate le proprietà che possono essere impostate per controllare le DataGrid dimensioni.

Proprietà Descrizione
Height Imposta un'altezza specifica per l'oggetto DataGrid.
MaxHeight Imposta il limite superiore per l'altezza dell'oggetto DataGrid. L'oggetto DataGrid crescerà verticalmente fino a raggiungere questa altezza.
MinHeight Imposta il limite inferiore per l'altezza dell'oggetto DataGrid. L'oggetto DataGrid verrà compattato verticalmente fino a raggiungere questa altezza.
Width Imposta una larghezza specifica per l'oggetto DataGrid.
MaxWidth Imposta il limite superiore per la larghezza di DataGrid. L'oggetto DataGrid crescerà orizzontalmente fino a raggiungere questa larghezza.
MinWidth Imposta il limite inferiore per la larghezza di DataGrid. L'oggetto DataGrid verrà compattato orizzontalmente fino a raggiungere questa larghezza.

Ridimensionamento di righe e intestazioni di riga

Righe di DataGrid

Per impostazione predefinita, la proprietà di Height una DataGrid riga è impostata su Double.NaN ("Auto" in XAML) e l'altezza della riga si espanderà fino alle dimensioni del relativo contenuto. L'altezza di tutte le righe in DataGrid può essere specificata impostando la DataGrid.RowHeight proprietà . Gli utenti possono modificare l'altezza della riga trascinando i divisori di intestazione di riga.

Intestazioni di riga di DataGrid

Per visualizzare le intestazioni di riga, la HeadersVisibility proprietà deve essere impostata su DataGridHeadersVisibility.Row o DataGridHeadersVisibility.All. Per impostazione predefinita, le intestazioni di riga vengono visualizzate e vengono ridimensionate automaticamente in base al contenuto. Alle intestazioni di riga può essere assegnata una larghezza specifica impostando la DataGrid.RowHeaderWidth proprietà .

Ridimensionamento di colonne e intestazioni di colonna

Colonne di DataGrid

DataGrid Usa i valori di DataGridLength e la DataGridLengthUnitType struttura per specificare le modalità di ridimensionamento assoluto o automatico.

Nella tabella seguente vengono illustrati i valori forniti dalla DataGridLengthUnitType struttura .

Nome Descrizione
Auto La modalità di ridimensionamento automatico predefinita ridimensiona le DataGrid colonne in base al contenuto delle intestazioni di celle e di colonna.
SizeToCells La modalità di ridimensionamento automatico basata su cella ridimensiona le DataGrid colonne in base al contenuto delle celle nella colonna, non incluse le intestazioni di colonna.
SizeToHeader La modalità di ridimensionamento automatico basata su intestazione ridimensiona le DataGrid colonne in base al contenuto solo delle intestazioni di colonna.
Pixel La modalità di ridimensionamento basata su pixel ridimensiona le DataGrid colonne in base al valore numerico fornito.
Star La modalità di dimensionamento star viene usata per distribuire lo spazio disponibile in base alle proporzioni ponderate.

In XAML i valori star vengono espressi come n* dove n rappresenta un valore numerico. 1* equivale a *. Ad esempio, se due colonne in avevano DataGrid larghezze * e 2*, la prima colonna riceverà una parte dello spazio disponibile e la seconda riceverà due parti dello spazio disponibile.

La DataGridLengthConverter classe può essere usata per convertire i dati tra valori numerici o stringa e DataGridLength valori.

Per impostazione predefinita, la DataGrid.ColumnWidth proprietà è impostata su SizeToHeadere la DataGridColumn.Width proprietà è impostata su Auto. Quando la modalità di ridimensionamento è impostata su Auto o SizeToCells, le colonne aumentano fino alla larghezza del contenuto visibile più ampio. Durante lo scorrimento, queste modalità di ridimensionamento determinano l'espansione delle colonne se il contenuto è maggiore delle dimensioni correnti della colonna viene eseguito lo scorrimento nella visualizzazione. La colonna non verrà ridotta dopo lo scorrimento del contenuto all'esterno della visualizzazione.

Le colonne in DataGrid possono anche essere impostate per le dimensioni automatiche solo entro i limiti specificati oppure le colonne possono essere impostate su una dimensione specifica. Nella tabella seguente vengono illustrate le proprietà che possono essere impostate per controllare le dimensioni delle colonne.

Proprietà Descrizione
DataGrid.MaxColumnWidth Imposta il limite superiore per tutte le colonne nell'oggetto DataGrid.
DataGridColumn.MaxWidth Imposta il limite superiore per una singola colonna. Esegue l'override dell'oggetto DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Imposta il limite inferiore per tutte le colonne nell'oggetto DataGrid.
DataGridColumn.MinWidth Imposta il limite inferiore per una singola colonna. Esegue l'override dell'oggetto DataGrid.MinColumnWidth.
DataGrid.ColumnWidth Imposta una larghezza specifica per tutte le colonne dell'oggetto DataGrid.
DataGridColumn.Width Imposta una larghezza specifica per una singola colonna. Esegue l'override dell'oggetto DataGrid.ColumnWidth.

Intestazioni di colonna DataGrid

Per impostazione predefinita, DataGrid vengono visualizzate le intestazioni di colonna. Per nascondere le intestazioni di colonna, la HeadersVisibility proprietà deve essere impostata su DataGridHeadersVisibility.Row o DataGridHeadersVisibility.None. Per impostazione predefinita, quando vengono visualizzate le intestazioni di colonna, le dimensioni vengono automaticamente adattate al contenuto. Alle intestazioni di colonna può essere assegnata un'altezza specifica impostando la DataGrid.ColumnHeaderHeight proprietà .

Ridimensionamento con il mouse

Gli utenti possono ridimensionare DataGrid righe e colonne trascinando i divisori di intestazione di riga o colonna. Supporta DataGrid inoltre il ridimensionamento automatico di righe e colonne facendo doppio clic sul divisore di intestazione di riga o colonna. Per impedire a un utente di ridimensionare determinate colonne, impostare la DataGridColumn.CanUserResize proprietà su false per le singole colonne. Per impedire agli utenti di ridimensionare tutte le colonne, impostare la DataGrid.CanUserResizeColumns proprietà su false. Per impedire agli utenti di ridimensionare tutte le righe, impostare la DataGrid.CanUserResizeRows proprietà su false.

Vedi anche