Children.Add(item)值不在预期范围内

时间:2009-07-31 18:42:10

标签: c# .net silverlight

我正在开发一个Silverlight 3应用程序,当我尝试将一个对象添加到Canvas时,会出现这个非常奇怪的错误。我的代码如下:

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);
}

我第一次使用它时,它按预期工作。但是,当我点击使用此代码创建的Person对象后点击x_LayoutRoot.Children.Add(child)时,我得到一个ArgumentException告诉我“值不在预期范围内。”

但是,当我在将child添加到x_LayoutRoot.Children之前添加以下代码时,问题就会消失。

child.SetValue(Canvas.NameProperty, "child" + objCount++);

为什么会这样?这是一个Silverlight错误,还是(更有可能)我错过了什么?

2 个答案:

答案 0 :(得分:24)

我想我已经找到了原因:我正在添加多个具有相同名称的Person对象。因此,如果将来有人遇到此问题,请确保所有对象都有唯一的名称!

答案 1 :(得分:1)

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);           

child.SetValue(Canvas.NameProperty, "child" + objCount++); //!

x_LayoutRoot.Children.Add(child);

您可以在添加子项之前添加不同的NameProperty