向 ScreenSpaceLines3D 添加一个点会导致 NullReferenceException

Adding a point to ScreenSpaceLines3D results in NullReferenceException

我在我的项目中使用 SharpenLines3d 画线来连接我 Viewport3D 中的对象。问题是,当我向 ScreenSpaceLined3D 添加点时,程序崩溃了,如下所示:

当我向 ScreenSpaceLines3D 添加点时,它不会在这些行中崩溃,所以我猜它是库中的东西。

这是我的代码:

for (int i = 0; i < MAX + 1; i++)
{
    ...

    var bounds = this.points[i].Bounds;

    var x = bounds.X + (bounds.SizeX / 2);
    var y = bounds.Y + (bounds.SizeY / 2);
    var z = bounds.Z + (bounds.SizeZ / 2);

    coords[i] = new Point3D(x, y, z);

    for (int j = 0; j < i; j++)
    {
        lines[i, j] = new ScreenSpaceLines3D();
        lines[i, j].Color = Colors.Red;
        lines[i, j].Thickness = 6;

        lines[i, j].Points.Add(coords[i]);
        lines[i, j].Points.Add(coords[j]);
    }

}

我确定我没有将 null 作为参数传递给 Add 函数(我试图用这个替换我的 Add 行:lines[i, j].Points.Add(new Point3D(0, 0, 0));,它还是不行)。

并且我把所有使用lines变量的代码都注释掉了,所以只有在创建一堆新的ScreenSpaceLines3D时才使用这个变量。但是我的程序没有在初始化时崩溃。

当我注释掉我在行中添加点的 2 行代码时,程序开始运行正常,但是当我再次添加它时,结果如屏幕截图所示。

如何处理?

UPD:添加点后添加 MainViewPort.Children.Add(lines[i, j]); 使它起作用。越来越厉害了

不知何故添加 MainViewPort.Children.Add(lines[i, j]); 解决了问题。没有它,程序会崩溃,但有了它,一切正常。

我不知道这是怎么回事,但就是这样。