estiramento alinhamento WPF
-
11-09-2019 - |
Pergunta
Alguém pode me ajudar a entender o alinhamento trecho WPF. Costumo correr em questões onde eu quero um controle para preencher uma área mas nunca compreender de que nível devo colocar o VerticalAlignment = "Stretch". Especialmente quando UserControls estão envolvidos.
Eu sempre resolver o problema, tentando coisas diferentes ou colocando estiramento em todos os níveis, mas eu gostaria de entender como fazê-lo corretamente.
Vamos dar o exemplo que eu tenho agora:
- Eu tenho uma grade com uma célula de tamanho fixo (que pode ser redimensionada com um GridSplitter)
- Nesta célula Eu tenho um UserControl que contém um StackPanel com um TabControl
- No TabControl Eu tenho TabItems contendo outro UserControl com um ListView
Ou em algum tipo de pseudo XAML
<ns:MyUserControl1 Grid.Row="0" Grid.Column="0">
<!-- this is in MyUserControl1 -->
<StackPanel>
<TabControl>
<TabItem>
<ns:MyUserControl2>
<!-- This is in MyUserControl2 -->
<ListView/>
</ns:MyUserControl2>
</TabItem>
</TabControl>
</StackPanel>
</ns:MyUserControl>
Agora, eu quero que o ListView para preencher toda a célula da grade (excluindo o TabControl e margens de curso).
Solução
Seu ListView vai encher o seu MyUserControl2 - se você quer este para caber dentro de todo o Tab, você precisa ter certeza de que você remova a altura e restrições largura dentro arquivo XAML do UserControl (estes será o padrão para 300 cada)
EDIT: Apologies - Eu saltei a parte mais importante do seu xaml ... O recipiente MyUserControl1 é um StackPanel ... isso vai empilhar controles filho e redimensionar para encaixá-los; Se você substituí-lo com um DockPanel (ou um Grid), os controles filho vai preencher o espaço disponível e lhe dar o resultado que você está depois ...
Tenha um olhar em este artigo MSDN ... Esperança isso ajuda:)