Opções de dimensionamento no controle DataGrid
Várias opções estão disponíveis para controlar como a DataGrid ajusta seu tamanho. O DataGrid, e linhas e colunas individuais no DataGrid, podem ser ajustados para dimensionar automaticamente de acordo com seu conteúdo ou ter valores específicos. Por padrão, o DataGrid crescerá e diminuirá para se ajustar ao tamanho de seu conteúdo.
Dimensionando o DataGrid
Cuidado ao usar o dimensionamento automático
Por padrão, as propriedades Height e Width do DataGrid são definidas como Double.NaN ("Auto
" em XAML) e o DataGrid se ajustará ao tamanho de seu conteúdo.
Quando colocado dentro de um contêiner que não restringe o tamanho de seus filhos, como um Canvas ou StackPanel, o DataGrid vai ultrapassar as bordas visíveis do contêiner e as barras de rolagem não serão mostradas. Essa condição tem implicações de usabilidade e desempenho.
Quando associado a um conjunto de dados, se o Height do DataGrid não for restrito, ele continuará a adicionar uma linha para cada item de dados no conjunto de dados associado. Isso pode fazer com que DataGrid cresça fora dos limites visível do aplicativo à medida que as linhas são adicionadas. O DataGrid não mostrará barras de rolagem nesse caso porque sua Height continuará crescendo para acomodar as novas linhas.
Um objeto é criado para cada linha no DataGrid. Se você estiver trabalhando com um conjunto de dados grande e permitir que o DataGrid se dimensione automaticamente, a criação de um grande número de objetos poderá afetar o desempenho do aplicativo.
Para evitar esses problemas quando você trabalha 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 Height for restrito, o DataGrid criará apenas as linhas que se ajustarão ao Heightespecificado e reciclarão essas linhas conforme necessário para exibir novos dados.
Definindo o tamanho do DataGrid
O DataGrid pode ser definido para dimensionar automaticamente dentro dos limites especificados ou o DataGrid pode ser definido como um tamanho específico. A tabela a seguir mostra as propriedades que podem ser definidas para controlar o tamanho do DataGrid.
Propriedade | Descrição |
---|---|
Height | Define uma altura específica para o DataGrid. |
MaxHeight | Define o limite superior para a altura do DataGrid. O DataGrid crescerá verticalmente até atingir essa altura. |
MinHeight | Define o limite inferior para a altura do DataGrid. O DataGrid diminuirá verticalmente até chegar a essa altura. |
Width | Define uma largura específica para o DataGrid. |
MaxWidth | Define o limite superior para a largura do DataGrid. O DataGrid crescerá horizontalmente até atingir essa largura. |
MinWidth | Define o limite inferior para a largura do DataGrid. O DataGrid reduzirá horizontalmente até atingir essa largura. |
Dimensionamento de linhas e cabeçalhos de linha
Linhas do DataGrid
Por padrão, a propriedade Height de uma linha de DataGrid é 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 propriedade DataGrid.RowHeight. Os usuários podem alterar a altura da linha arrastando os divisores de cabeçalho de linha.
Cabeçalhos de linha do DataGrid
Para exibir cabeçalhos de linha, a propriedade HeadersVisibility 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 se ajustarem ao conteúdo. Os cabeçalhos de linha podem receber uma largura específica definindo a propriedade DataGrid.RowHeaderWidth.
Dimensionamento de colunas e cabeçalhos de coluna
Colunas do DataGrid
O DataGrid usa valores do DataGridLength e da estrutura DataGridLengthUnitType para especificar modos de dimensionamento absolutos ou automáticos.
A tabela a seguir mostra os valores fornecidos pela estrutura DataGridLengthUnitType.
Nome | Descrição |
---|---|
Auto | O modo padrão de dimensionamento automático dimensiona colunas DataGrid com base no conteúdo de cabeçalhos de coluna e células. |
SizeToCells | O modo de dimensionamento automático baseado em células ajusta as colunas DataGrid com base no conteúdo das células na coluna, sem incluir os cabeçalhos das colunas. |
SizeToHeader | O modo de dimensionamento automático baseado em cabeçalho dimensiona as colunas DataGrid com base apenas no conteúdo dos cabeçalhos das colunas. |
Pixel | O modo de dimensionamento baseado em pixel dimensiona DataGrid colunas com base no valor numérico fornecido. |
Star | O modo de dimensionamento de estrela é usado para distribuir o espaço disponível por 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 classe DataGridLengthConverter pode ser usada para converter dados entre valores numéricos ou de cadeia de caracteres e valores de DataGridLength.
Por padrão, a propriedade DataGrid.ColumnWidth é definida como SizeToHeadere a propriedade DataGridColumn.Width é definida como Auto. Quando o modo de dimensionamento for definido como Auto ou SizeToCells, as colunas aumentarão até a largura de seu conteúdo visível mais largo. Ao rolar, esses modos de dimensionamento farão com que as colunas se expandam se o conteúdo maior que o tamanho da coluna atual for rolado para a exibição. A coluna não será reduzida depois que o conteúdo for rolado para fora da exibição.
As colunas no DataGrid também podem ser definidas para dimensionar automaticamente somente dentro dos limites especificados ou as colunas podem ser definidas como um tamanho específico. A tabela a seguir mostra as propriedades que podem ser definidas para controlar os tamanhos das colunas.
Propriedade | Descrição |
---|---|
DataGrid.MaxColumnWidth | Estabelece o limite superior para todas as colunas do 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. Sobrescreve 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. Sobrescreve DataGrid.ColumnWidth. |
Cabeçalhos das colunas do DataGrid
Por padrão, DataGrid cabeçalhos de coluna são exibidos. Para ocultar cabeçalhos de coluna, a propriedade HeadersVisibility deve ser definida como DataGridHeadersVisibility.Row ou DataGridHeadersVisibility.None. Por padrão, quando os cabeçalhos de coluna são exibidos, eles são dimensionados automaticamente para se ajustarem ao conteúdo. Os cabeçalhos de coluna podem receber uma altura específica definindo a propriedade DataGrid.ColumnHeaderHeight.
Redimensionar com o Mouse
Os usuários podem redimensionar DataGrid linhas e colunas arrastando os divisores de cabeçalho. O DataGrid também dá 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 propriedade DataGridColumn.CanUserResize como false
para as colunas individuais. Para impedir que os usuários redimensionem todas as colunas, defina a propriedade DataGrid.CanUserResizeColumns como false
. Para impedir que os usuários redimensionem todas as linhas, defina a propriedade DataGrid.CanUserResizeRows como false
.
Consulte também
.NET Desktop feedback