Procédure : obtenir ou définir des propriétés de positionnement de canevas
Cet exemple montre comment utiliser les méthodes de positionnement de l’élément Canvas pour positionner le contenu enfant. Cet exemple utilise du contenu dans un ListBoxItem pour représenter des valeurs de positionnement et convertit les valeurs en instances de Double, qui est un argument requis pour le positionnement. Les valeurs sont ensuite converties en chaînes et affichées sous forme de texte dans un élément TextBlock à l’aide de la méthode GetLeft.
Exemple
L’exemple suivant crée un élément ListBox qui a onze éléments ListBoxItem sélectionnables. L’événement SelectionChanged déclenche la méthode personnalisée ChangeLeft
, que le bloc de code suivant définit.
Chaque ListBoxItem représente une valeur Double, qui est l’un des arguments acceptés par la méthode SetLeft de Canvas. Pour pouvoir utiliser un ListBoxItem pour représenter une instance de Double, vous devez d’abord convertir le ListBoxItem en type de données correct.
<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>
Lorsqu’un utilisateur modifie la sélection ListBox, il appelle la méthode personnalisée ChangeLeft
. Cette méthode transmet le ListBoxItem à un objet LengthConverter, qui convertit la Content d’un ListBoxItem en instance de Double (notez que cette valeur a déjà été convertie en String à l’aide de la méthode ToString). Cette valeur est ensuite renvoyée aux méthodes SetLeft et GetLeft de Canvas afin de modifier la position de l’objet 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
Voir aussi
- Canvas
- ListBoxItem
- LengthConverter
- Vue d’ensemble des panneaux
.NET Desktop feedback