Comment : obtenir ou définir des propriétés de positionnement de la zone de dessin
Cet exemple montre comment utiliser les méthodes de positionnement de l’élément pour positionner le Canvas contenu enfant. Cet exemple utilise du contenu dans un ListBoxItem pour représenter les 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 TextBlock élément à l’aide de la GetLeft méthode.
Exemple
L’exemple suivant crée un ListBox élément qui a onze éléments sélectionnables ListBoxItem . L’événement SelectionChanged déclenche la ChangeLeft
méthode personnalisée, que le bloc de code suivant définit.
Chacun ListBoxItem représente une Double valeur, qui est l’un des arguments acceptés par la SetLeft méthode d’acceptation Canvas . Pour pouvoir représenter ListBoxItem une instance de , vous devez d’abord convertir le ListBoxItem type de Doubledonnées approprié.
<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 ListBox sélection, il appelle la ChangeLeft
méthode personnalisée. Cette méthode transmet l’objet ListBoxItem à un LengthConverter objet, qui convertit le Content d’un ListBoxItem en instance de Double (notez que cette valeur a déjà été convertie en une String méthode ToString ). Cette valeur est ensuite renvoyée aux méthodes et aux SetLeft méthodes de Canvas façon à modifier la position de l’objettext1
.GetLeft
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
.NET Desktop feedback