Condividi tramite


Procedura: modificare la proprietà Margin

Aggiornamento: novembre 2007

In questo esempio viene illustrato come modificare la proprietà Margin di un elemento figlio all'interno di un controllo Grid. I valori di posizionamento vengono rappresentati come contenuto di un oggetto ListBoxItem. I valori vengono in seguito convertiti in istanze di Thickness, che è un valore obbligatorio per Margin. Il valore viene quindi riconvertito in una stringa e visualizzato come oggetto TextBlock.

Esempio

Nell'esempio seguente viene creato un elemento ListBox che include dieci elementi selezionabili. L'evento SelectionChanged attiva il metodo personalizzato ChangeMargin, definito nell'esempio di codice successivo.

Nell'esempio di Extensible Application Markup Language (XAML) ogni oggetto ListBoxItem rappresenta un valore Thickness, utilizzato per descrivere i margini uniformi di un elemento. Tuttavia, prima di poter utilizzare un oggetto ListBoxItem per rappresentare un'istanza di Thickness, è necessario convertirlo nel tipo di dati corretto. Nell'esempio di codice successivo viene illustrata la conversione.

<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 un utente modifica la selezione di ListBox, viene richiamato il metodo personalizzato ChangeMargin. Questo metodo passa l'oggetto ListBoxItem a un oggetto ThicknessConverter, che converte la proprietà Content di ListBoxItem in un'istanza di Thickness. Si noti che questo valore è già stato convertito in una stringa tramite il metodo ToString. Il valore viene quindi passato di nuovo come Margin dell'oggetto text1, modificandone dinamicamente la posizione.

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 +".";
        }

Per l'esempio completo, vedere Esempio di modifica dei margini di una griglia.

Vedere anche

Attività

Procedura: convertire un oggetto ListBoxItem in un nuovo tipo di dati

Procedura: utilizzare un oggetto ThicknessConverter

Riferimenti

Grid

ThicknessConverter

Margin

ListBox