Adicionar/subtrair o comprimento da grade no WPF
-
21-09-2019 - |
Pergunta
Eu tenho três colunas contendo dois expansores nas colunas esquerda e direita. Quando os dois Expnders entraram em colapso, preciso atingir o conteúdo na coluna do meio na janela completa. Para isso, preciso calcular os comprimentos da grade.
Por exemplo
GridLength w1= new GridLength( 20 );
GridLength w2= new GridLength( 50 );
GridLength w3= new GridLength( 0 );
Como conseguir
w3 = w2 - w1
Solução
Tente o seguinte: defina as larguras do expansível ColumnDefinitions
para Auto
e o do meio a 1 unidade de estrela. Controle a largura das colunas expansíveis, definindo a largura em seu conteúdo. Então, quando eles entrarem em colapso, a coluna do meio deve se expandir para preencher o espaço disponível.
Exemplo:
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Expander Margin="0" VerticalAlignment="Top" Header="Expander" ExpandDirection="Right">
<Grid>
<Grid HorizontalAlignment="Left" Width="100" Background="Blue" Height="100"/>
</Grid>
</Expander>
<Expander Grid.Column="2" Margin="0" VerticalAlignment="Top" Header="Expander" ExpandDirection="Left">
<Grid>
<Grid HorizontalAlignment="Left" Width="100" Background="Blue" Height="100"/>
</Grid>
</Expander>
<Grid Background="Aquamarine" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="1" />
</Grid>
Espero que isto ajude
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow