Modification de la Position d'un Élément par programmation dans WPF
Je n'ai pas su que cela serait un peu compliqué. J'ai une Toile dans laquelle je suis en train d'ajouter de l'Ellipse de façon dynamique. Voici le code:
<StackPanel>
<Canvas Name="canvas" Background="LightBlue" Margin="5" Width="250" Height="250">
</Canvas>
<Button Content="Draw Images" Click="Button_Click" Width="100" Margin="10" />
</StackPanel>
Et voici le code derrière:
private void Button_Click(object sender, RoutedEventArgs e)
{
Ellipse ellipse = new Ellipse();
ellipse.Fill = Brushes.Red;
ellipse.Width = 10;
ellipse.Height = 10;
ellipse.SetValue(Canvas.LeftProperty,100);
ellipse.SetValue(Canvas.TopProperty,100);
canvas.Children.Add(ellipse);
}
Pour une raison quelconque, il lève l'exception que 100 n'est pas une valeur valide!
Vous devez vous connecter pour publier un commentaire.
Voici la réponse:
La raison
100
ne fonctionne pas, c'est queSetValue()
l'interprète comme un nombre entier, maisCanvas.Top
&Canvas.Left
sont doubles. Essayez100d
à la place. AussiSetLeft()
&SetTop()
travail parce qu'ils s'attendent doubles.Le code ci-dessous fonctionne:
Les valeurs sont de type double.
Gauche, et en Haut sont attachés les propriétés détenues par classe de Toile, que vous pouvez joindre à tout DependencyObject, si c'est un FrameworkElement ou pas et si il est hébergé dans une Toile ou pas.
C'est pourquoi vous devez utiliser:
myDependencyObject.SetValue(Toile.LeftProperty, leftValue);
myDependencyObject.SetValue(Toile.TopProperty, topValue);
La plupart des autres conteneurs, dire que la Grille de simplement ignorer ces valeurs de propriété, si notre objet de dépendance est un FrameworkElement contenue en eux, au lieu de l'intérieur d'une Toile. On pourrait faire bien d'autres contenants que le respect de ces propriétés
si vous souhaitez déplacer votre toile avec de la matrice que vous devez faire comme ceci :
ensuite, vous pouvez faire tous les travaux que vous souhaitez, sur la Matrice "mt". Comme ceci :
Pour L'Échelle:
Pour Traduire ( Changement De Position ) :
Et si vous voulez créer une toile élément de la programmation, vous devez faire comme ceci :
Espère que cela vous aide.
Essayer de convertir un entier de type de type Double à l'aide de "CDbl" fonction
Essayez ceci: