Opções de dimensionamento no controle DataGrid

Várias opções estão disponíveis para controlar como os DataGrid tamanhos em si. O DataGrid, e as linhas e colunas individuais no DataGrid, podem ser definidas para dimensionar automaticamente para seu conteúdo ou podem ser definidas para valores específicos. Por padrão, o DataGrid irá crescer e diminuir para se ajustar ao tamanho de seu conteúdo.

Dimensionamento de DataGrid

Cuidados ao usar o dimensionamento automático

Por padrão, as Height propriedades e Width do DataGrid são definidas como Double.NaN ("Auto" em XAML) e o DataGrid será ajustado ao tamanho de seu conteúdo.

Quando colocado dentro de um recipiente que não restringe o tamanho de seus filhos, como um Canvas ou StackPanel, a DataGrid vontade se estende além dos limites visíveis do contêiner e as barras de rolagem não serão mostradas. Esta condição tem implicações de desempenho e usabilidade.

Quando vinculado a um conjunto de dados, se o Height do não estiver restrito, ele continuará a adicionar uma linha para cada item de dados no conjunto de DataGrid dados vinculado. Isso pode fazer com que o DataGrid cresça fora dos limites visíveis do seu aplicativo à medida que as linhas são adicionadas. O DataGrid não mostrará barras de rolagem nesse caso porque continuará Height a crescer para acomodar as novas linhas.

Um objeto é criado para cada linha no DataGrid. Se você estiver trabalhando com um grande conjunto de dados e permitir que o dimensione automaticamente a si mesmo, a criação de um grande número de objetos pode afetar o DataGrid desempenho do seu aplicativo.

Para evitar esses problemas ao trabalhar com grandes conjuntos de dados, é recomendável definir especificamente o Height do DataGrid ou colocá-lo em um contêiner que restringirá seu Height, como um Grid. Quando o é restrito, o HeightDataGrid criará apenas as linhas que caberão dentro de seu especificado Height, e reciclará essas linhas conforme necessário para exibir novos dados.

Configurando o tamanho de DataGrid

O DataGrid pode ser definido para dimensionar automaticamente dentro de limites especificados ou o DataGrid pode ser definido para um tamanho específico. A tabela a seguir mostra as propriedades que podem ser definidas para controlar o DataGrid tamanho.

Propriedade Descrição
Height Define uma altura específica para o DataGrid.
MaxHeight Define o limite superior para a altura do DataGrid. A DataGrid vontade vai crescendo verticalmente até atingir essa altura.
MinHeight Define o limite inferior para a altura do DataGrid. O DataGrid vai encolher verticalmente até atingir essa altura.
Width Define uma largura específica para o DataGrid.
MaxWidth Define o limite superior para a largura do DataGrid. O DataGrid vai crescendo horizontalmente até atingir essa largura.
MinWidth Define o limite inferior para a largura do DataGrid. O DataGrid irá encolher horizontalmente até atingir essa largura.

Dimensionando linhas e cabeçalhos de linha

Linhas DataGrid

Por padrão, a propriedade de Height uma DataGrid linha é definida como Double.NaN ("Auto" em XAML) e a altura da linha será expandida para o tamanho de seu conteúdo. A altura de todas as linhas no DataGrid pode ser especificada definindo a DataGrid.RowHeight propriedade. Os usuários podem alterar a altura da linha arrastando os divisores de cabeçalho de linha.

Cabeçalhos de linha DataGrid

Para exibir cabeçalhos de linha, a HeadersVisibility propriedade deve ser definida como DataGridHeadersVisibility.Row ou DataGridHeadersVisibility.All. Por padrão, os cabeçalhos de linha são exibidos e são dimensionados automaticamente para ajustar seu conteúdo. Os cabeçalhos de linha podem receber uma largura específica definindo a DataGrid.RowHeaderWidth propriedade.

Dimensionamento de colunas e cabeçalhos de coluna

Colunas DataGrid

O DataGrid usa valores do e da DataGridLengthUnitType estrutura para especificar modos de DataGridLength dimensionamento absolutos ou automáticos.

A tabela a seguir mostra os valores fornecidos pela DataGridLengthUnitType estrutura.

Nome Descrição
Auto O modo de dimensionamento automático padrão dimensiona DataGrid colunas com base no conteúdo de células e cabeçalhos de coluna.
SizeToCells O modo de dimensionamento automático baseado em célula dimensiona DataGrid colunas com base no conteúdo das células na coluna, não incluindo cabeçalhos de coluna.
SizeToHeader O modo de dimensionamento automático baseado em cabeçalho dimensiona DataGrid colunas com base apenas no conteúdo de cabeçalhos de coluna.
Pixel O modo de dimensionamento baseado em pixels dimensiona DataGrid as colunas com base no valor numérico fornecido.
Star O modo de dimensionamento em estrela é usado para distribuir o espaço disponível em proporções ponderadas.

No XAML, os valores de estrela são expressos como n*, em que n representa um valor numérico. 1* é equivalente a *. Por exemplo, se duas colunas em um DataGrid tivessem larguras de * e 2*, a primeira coluna receberia uma parte do espaço disponível e a segunda coluna receberia duas partes do espaço disponível.

A DataGridLengthConverter classe pode ser usada para converter dados entre valores e valores DataGridLength numéricos ou de cadeia de caracteres.

Por padrão, a propriedade é definida como , e a DataGridColumn.Width propriedade é definida como AutoSizeToHeader.DataGrid.ColumnWidth Quando o modo de dimensionamento estiver definido como Auto ou SizeToCells, as colunas crescerão até a largura de seu conteúdo visível mais amplo. Ao rolar, esses modos de dimensionamento farão as colunas expandirem se o conteúdo que é maior do que o tamanho atual da coluna for colocado na exibição. A coluna não será reduzida depois que o conteúdo estiver fora da exibição.

As colunas no também podem ser definidas para serem dimensionadas automaticamente somente dentro dos limites especificados, ou as DataGrid colunas podem ser definidas para um tamanho específico. A tabela a seguir mostra as propriedades que podem ser definidas para controlar o tamanho das colunas.

Propriedade Descrição
DataGrid.MaxColumnWidth Define o limite superior para todas as colunas no DataGrid.
DataGridColumn.MaxWidth Define o limite superior para uma coluna individual. Substitui DataGrid.MaxColumnWidth.
DataGrid.MinColumnWidth Define o limite inferior para todas as colunas no DataGrid.
DataGridColumn.MinWidth Define o limite inferior para uma coluna individual. Substitui DataGrid.MinColumnWidth.
DataGrid.ColumnWidth Define uma largura específica para todas as colunas no DataGrid.
DataGridColumn.Width Define uma largura específica para uma coluna individual. Substitui DataGrid.ColumnWidth.

Cabeçalhos da coluna DataGrid

Por padrão, DataGrid os cabeçalhos de coluna são exibidos. Para ocultar cabeçalhos de coluna, a HeadersVisibility propriedade deve ser definida como DataGridHeadersVisibility.Row ou DataGridHeadersVisibility.None. Por padrão, quando os cabeçalhos de coluna, eles são dimensionados automaticamente para ajustar seu conteúdo. Os cabeçalhos de coluna podem receber uma altura específica definindo a DataGrid.ColumnHeaderHeight propriedade.

Redimensionando com o mouse

Os usuários podem redimensionar DataGrid linhas e colunas arrastando os divisores de cabeçalho de linha ou coluna. O DataGrid também oferece suporte ao redimensionamento automático de linhas e colunas clicando duas vezes no divisor de cabeçalho de linha ou coluna. Para impedir que um usuário redimensione colunas específicas, defina a DataGridColumn.CanUserResize propriedade como false para as colunas individuais. Para impedir que os usuários redimensionem todas as colunas, defina a DataGrid.CanUserResizeColumns propriedade como false. Para impedir que os usuários redimensionem todas as linhas, defina a DataGrid.CanUserResizeRows propriedade como false.

Confira também