Je développe une application Silverlight 3 et obtenir cette erreur vraiment étrange lorsque j'essaie d'ajouter un objet à un canevas. Mon code est le suivant:Children.Add (valeur d'objet) valeur ne se situe pas dans la fourchette attendue
for (int i = 0; i < person.Children.Count; i++)
{
//Add children in same position as parent
Person child = person.Children[i];
child.x_PositionTransform.X = person.x_PositionTransform.X;
child.x_PositionTransform.Y = person.x_PositionTransform.Y;
child.Click += new RoutedEventHandler(person_Click);
x_LayoutRoot.Children.Add(child);
}
La première fois que j'utilise ceci, cela fonctionne comme prévu. Toutefois, lorsque je clique sur x_LayoutRoot.Children.Add (enfant) après avoir cliqué sur un objet Person créé à l'aide de ce code, j'obtiens une exception ArgumentException qui m'indique que "la valeur ne correspond pas à la plage attendue".
Cependant, lorsque j'ajoute le code suivant avant d'ajouter un enfant à x_LayoutRoot.Children, le problème disparaît.
child.SetValue(Canvas.NameProperty, "child" + objCount++);
Pourquoi cela se produit-il? Est-ce un bug Silverlight, ou (plus probablement) suis-je juste manquer quelque chose?
vous pouvez utiliser FrameworkElement.NameProperty au lieu de Canvas.NameProperty –