Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo esempio viene illustrato come utilizzare i metodi di posizionamento dell'elemento Canvas per posizionare il contenuto dei figli. Questo esempio utilizza il contenuto di un ListBoxItem per rappresentare i valori di posizionamento e converte i valori in istanze di Double, il quale è un argomento richiesto per il posizionamento. I valori vengono quindi convertiti nuovamente in stringhe e visualizzati come testo in un elemento TextBlock usando il metodo GetLeft.
Esempio
Nell'esempio seguente viene creato un elemento ListBox con undici elementi selezionabili ListBoxItem. L'evento SelectionChanged attiva il metodo personalizzato ChangeLeft, definito dal blocco di codice successivo.
Ogni ListBoxItem rappresenta un valore di Double, ovvero uno degli argomenti accettati dal metodo SetLeft di Canvas. Per usare un ListBoxItem per rappresentare un'istanza di Double, è prima necessario convertire il ListBoxItem nel tipo di dati corretto.
<ListBox Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" Width="60" Margin="10,0,0,0" SelectionChanged="ChangeLeft">
<ListBoxItem>Auto</ListBoxItem>
<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 ListBox, richiama il metodo personalizzato ChangeLeft. Questo metodo passa il ListBoxItem a un oggetto LengthConverter, che converte il Content di un ListBoxItem in un'istanza di Double (si noti che questo valore è già stato convertito in un String utilizzando il metodo ToString). Questo valore viene quindi passato di nuovo ai metodi SetLeft e GetLeft di Canvas per modificare la posizione dell'oggetto text1.
private void ChangeLeft(object sender, SelectionChangedEventArgs args)
{
ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
LengthConverter myLengthConverter = new LengthConverter();
Double db1 = (Double)myLengthConverter.ConvertFromString(li.Content.ToString());
Canvas.SetLeft(text1, db1);
String st1 = (String)myLengthConverter.ConvertToString(Canvas.GetLeft(text1));
canvasLeft.Text = "Canvas.Left = " + st1;
}
Private Sub ChangeLeft(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
Dim li As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
Dim myLengthConverter As New LengthConverter
Dim db1 As Double = CType(myLengthConverter.ConvertFromString(li.Content.ToString()), Double)
Canvas.SetLeft(text1, db1)
Dim st1 As String = CType(myLengthConverter.ConvertToString(Canvas.GetLeft(text1)), String)
canvasLeft.Text = "Canvas.Left = " + st1
End Sub
Vedere anche
- Canvas
- ListBoxItem
- LengthConverter
- Panoramica dei Pannelli
.NET Desktop feedback