Compartilhar via


Como: Change the Margin Property

Esse exemplo mostra como modificar a propriedade Margin do elemento filho que está num Grid. O exemplo representa os valores de posicionamento como conteúdo em um ListBoxItem. Os valores depois são convertidos em instâncias de Thickness, que é um valor requerido para Margin. O valor então é convertido de volta para um string e exibido como umTextBlock.

Exemplo

O exemplo a seguir cria um elemento ListBox que possui dez objetos selecionáveis. O evento SelectionChanged dispara o método personalizado ChangeMargin, que o código de exemplo a seguir define.

No exemplo de Extensible Application Markup Language (XAML), cada ListBoxItem representa um valor Thickness, que é utilizado para descrever margens uniformes de um elemento. Entretanto, antes que você possa utilizar um ListBoxItem para representar uma instância de Thickness, você deve primeiro convertê-lo para o tipo de dado correto. O código de exemplo a seguir mostra a conversão.

<ListBox Grid.Row="0" Grid.Column="1" 
         Width="50" Height="50" 
         VerticalAlignment="Top" 
         SelectionChanged="ChangeMargin">
    <ListBoxItem>10</ListBoxItem>
    <ListBoxItem>20</ListBoxItem>
    <ListBoxItem>30</ListBoxItem>
    <ListBoxItem>40</ListBoxItem>
    <ListBoxItem>50</ListBoxItem>
    <ListBoxItem>60</ListBoxItem>
    <ListBoxItem>70</ListBoxItem>
    <ListBoxItem>80</ListBoxItem>
    <ListBoxItem>90</ListBoxItem>
    <ListBoxItem>100</ListBoxItem>
</ListBox>

Quando um usuário modifica a seleção ListBox, a mudança invoca o método personalizado ChangeMargin. Esse método passa o ListBoxItem para um objeto ThicknessConverter, que converte a propriedade ListBoxItem do Content para uma instância do Thickness. (Observe que o valor já foi convertido em um string utilizando o método ToString.) Esse valor é passado então de volta como um Margin do objeto text1, mudando sua posição dinamicamente.

Private Sub ChangeMargin(ByVal sender As Object, ByVal args As SelectionChangedEventArgs)

    Dim li As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
    Dim myThicknessConverter As ThicknessConverter = New ThicknessConverter()
    Dim th1 As Thickness = CType(myThicknessConverter.ConvertFromString(li.Content.ToString()), Thickness)
    text1.Margin = th1
    Dim st1 As String = CType(myThicknessConverter.ConvertToString(text1.Margin), String)
    gridVal.Text = "The Margin property is set to " + st1 + "."
End Sub
     private void ChangeMargin(object sender, SelectionChangedEventArgs args)
        {
            ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
            ThicknessConverter myThicknessConverter = new ThicknessConverter();
            Thickness th1 = (Thickness)myThicknessConverter.ConvertFromString(li.Content.ToString());
            text1.Margin = th1;
            String st1 = (String)myThicknessConverter.ConvertToString(text1.Margin);
            gridVal.Text = "The Margin property is set to " + st1 +".";
        }

For the complete sample, see Alterar margens em um exemplo de grade.

Consulte também

Tarefas

Como: Convert a ListBoxItem to a New Data Type

Como: Usar um Objeto ThicknessConverter

Referência

Grid

ThicknessConverter

Margin

ListBox