Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子项。添加(项)值不在预期范围内_C#_.net_Silverlight - Fatal编程技术网

C# 子项。添加(项)值不在预期范围内

C# 子项。添加(项)值不在预期范围内,c#,.net,silverlight,C#,.net,Silverlight,我正在开发一个Silverlight3应用程序,当我尝试向画布添加对象时,出现了一个非常奇怪的错误。我的代码如下: 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_PositionTra

我正在开发一个Silverlight3应用程序,当我尝试向画布添加对象时,出现了一个非常奇怪的错误。我的代码如下:

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

为什么会这样?这是Silverlight bug,还是(更有可能)我只是遗漏了什么?

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

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
,该子对象多次出现相同的问题,我现在将
…Children.add(obj)
调用中的NullReferenceExceptions作为最可能的原因。您可以使用FrameworkElement.NameProperty而不是Canvas.NameProperty
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);