O equivalente WPF de DockStyle.Fill do WinForms é:
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Este é o padrão para quase controles, portanto, em geral, você não precisa fazer nada para que um controle WPF preencha seu contêiner pai : eles fazem isso automaticamente. Isso é verdade para todos os recipientes que não comprimem seus filhos até o tamanho mínimo.
Erros comuns
Vou agora explicar vários erros comuns que impedem o HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
funcionamento conforme o esperado.
1. Altura ou largura explícita
Um erro comum é especificar explicitamente uma largura ou altura para um controle. Então, se você tem isso:
<Grid>
<Button Content="Why am I not filling the window?" Width="200" Height="20" />
...
</Grid>
Basta remover os atributos de largura e altura:
<Grid>
<Button Content="Ahhh... problem solved" />
...
</Grid>
2. O painel que contém o controle aperta o tamanho mínimo
Outro erro comum é fazer com que o painel de contenção aperte o seu controle o máximo possível. Por exemplo, um StackPanel vertical sempre comprimirá seu conteúdo verticalmente tão pequeno quanto possível:
<StackPanel>
<Button Content="Why am I squished flat?" />
</StackPanel>
Mude para outro painel e você estará pronto para prosseguir:
<DockPanel>
<Button Content="I am no longer squished." />
</DockPanel>
Além disso, qualquer linha ou coluna de grade cuja altura seja "Auto" irá espremer de forma semelhante seu conteúdo nessa direção.
Alguns exemplos de contêineres que não comprimem seus filhos são:
- ContentControls nunca espremem seus filhos (isso inclui Border, Button, CheckBox, ScrollViewer e muitos outros)
- Grade com uma única linha e coluna
- Grade com linhas e colunas de tamanho "*"
- DockPanel não aperta seu último filho
- TabControl não comprime seu conteúdo
Alguns exemplos de recipientes que comprimem seus filhos são:
- StackPanel comprime em sua direção de Orientação
- Grade com linha ou coluna de tamanho "Auto" comprimida nessa direção
- DockPanel aperta todos, exceto seu último filho na direção do dock
- TabControl comprime seu cabeçalho (o que é exibido na guia)
3. Altura ou largura explícita mais para fora
É incrível quantas vezes vejo Grid ou DockPanel com altura e largura explícitas, como esta:
<Grid Width="200" Height="100">
<Button Content="I am unnecessarily constrainted by my containing panel" />
</Grid>
Em geral, você nunca deseja dar a qualquer painel uma altura ou largura explícita. Minha primeira etapa ao diagnosticar problemas de layout é remover cada altura ou largura explícita que posso encontrar.
4. A janela é SizeToContent quando não deveria ser
Quando você usa SizeToContent, seu conteúdo será reduzido ao tamanho mínimo. Em muitas aplicações, isso é muito útil e é a escolha correta. Mas se o seu conteúdo não tiver um tamanho "natural", você provavelmente desejará omitir SizeToContent.