Silverlight Stretch elemento filho para preencher o recipiente pai?
-
03-07-2019 - |
Pergunta
Em Silverlight, como posso esticar a largura de uma linha para preencher a largura do Stackpanel em que é um elemento infantil? Prefira uma solução XAML, não um código-behind. Aqui está como posso fazer isso no WPF:
<Line X1="0"
X2="{Binding Path=ActualWidth, ElementName=HolePatternStackPanel}"
Stroke="Gray"
StrokeThickness="1" />
Mas isso não funciona no Silverlight.
Solução
<Line X1="0" Y1="0" X2="0" Y2="1" Stretch="Fill" Stroke="#FF000000" />
Funciona no WPF e Silverlight.
Se os Xs são 0, é uma linha vertical. Se os Y são 0, é horizontal. Use x1 = 0 y1 = 0 x2 = 1 y2 = 1 para diagonal do canto superior esquerdo para o canto inferior direito ou reverte -o para o canto inferior esquerdo para o canto superior direito.
Funky Fresh.
Outras dicas
Isso foi respondido no Fórum Silverlight.net pelo Usuário Sladapter da seguinte maneira:
O Silverlight atual não suporta a ligação ao elemento.
Você tem que usar o objeto de linha? Se você deseja apenas desenhar uma linha, pode usar o retângulo (altura de 2 px), poderá definir o horizontalalignamento = "esticar" para que ele se estenda automaticamente.
Funcionou peferctly para minhas necessidades.
O ElementBinding existe no Silverlight 4. Mas ainda não existe uma ótima maneira de esticar um item para preencher seu contêiner pai. O que você realmente deseja é se encaixar no contêiner pai na árvore visual, que leva em consideração a aplicação de modelos.