Estou usando DataGrids em XAML (não Silverlight) com colunas redimensionáveis, o DataGrid se expandirá se o usuário redimensionar a tela.
Atualmente, se as larguras de todas as colunas do DataGrid forem menores do que a largura do DataGrid, recebo uma "coluna" extra aparecendo que não pode ser clicada e não tem nenhum propósito.
Alguém sabe fazer uma coluna sempre redimensionar para preencher todo o espaço restante?
AutoGenerateColumns="True"
?<DataGrid AutoGenerateColumns="True" ColumnWidth="*" ItemsSource={Binding} />
ColumnWidth="*"
no DataGrid quantoWidth="*"
nas colunas individuais têm o efeito desejadoCertifique-se de que seu DataGrid tenha sido
Width
definido como{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}
.Assim, sua configuração de
Width="*"
atributo emDataGrid.Columns/DataGridXXXXColumn
elementos deve funcionar.fonte
Conforme observado,
ColumnWidth="*"
funcionou perfeitamente bem para um DataGrid em XAML.Eu usei neste contexto:
fonte
Defina a
Width
propriedade das colunas com uma largura proporcional, como*
fonte
My 2 Cent ->
Muito tarde para a festa
DataGrid -> Coluna -> Largura = "*" só funciona se o contêiner pai DataGrid tiver largura fixa.
exemplo: eu coloquei o DataGrid em Grid -> Coluna cuja largura = "Auto" then Width = "*" em DataGrid não funciona, mas se você definir Grid -> Column Width = "450" significa fixo, funcionará bem
fonte
Outro giro no mesmo tema:
fonte
Eu adicionei um HorizontalAlignment = "Center" (o padrão é "Strech") e ele resolveu meu problema porque tornava a grade de dados apenas com a largura necessária. (Removida a configuração de largura do datagrid, se você tiver um.)
fonte
Isso não irá expandir a última coluna da grade xaml para ocupar o espaço restante se
AutoGeneratedColumns="True"
.fonte
defina a largura de UMA coluna para qualquer valor, ou seja, largura = "*"
fonte
Para quem procura uma solução alternativa em C #:
Se você precisar, por algum motivo, ter o "AutoGeneratedColumns" habilitado, uma coisa que você pode fazer é especificar a largura de todas as colunas, exceto aquelas que deseja redimensionar automaticamente (não ocupará o espaço restante , mas será redimensionado para o conteúdo da célula ).
Exemplo (dgShopppingCart é meu DataGrid):
Para mim, funciona como uma solução alternativa porque eu precisava redimensionar o DataGrid quando o usuário maximizasse a janela.
fonte