Я разрабатываю приложение Silverlight 3 и получаю эту действительно странную ошибку, когда пытаюсь добавить объект к холсту. Мой код выглядит следующим образом:
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);
}
В первый раз, когда я использую это, он работает так, как ожидалось. Однако, когда я нажал x_LayoutRoot.Children.Add(дочерний элемент) после нажатия объекта Person, который был создан с использованием этого кода, я получаю исключение ArgumentException, говорящее мне, что "Значение не попадает в ожидаемый диапазон".
Однако, когда я добавляю следующий код перед добавлением дочернего элемента в x_LayoutRoot.Children, проблема исчезает.
child.SetValue(Canvas.NameProperty, "child" + objCount++);
Почему это происходит? Является ли это ошибкой Silverlight или (скорее), я просто что-то пропустил?