多条线画导致“指定的视觉已经是另一个视觉的子元素”错误

时间:2019-04-26 22:58:14

标签: c# wpf canvas line

我正在从循环中绘制一系列线条(省略不重要的内容):

     for (int i = 0; i < TLS.NumEdges - 10; i++)
            {
                MSTLine.X1 = BlueArmy[TLS.EdgeList[i, 0]].Location.X;
                MSTLine.Y1 = BlueArmy[TLS.EdgeList[i, 1]].Location.Y;   
                MSTLine.X2 = BlueArmy[TLS.EdgeList[i + 1, 0]].Location.X;
                MSTLine.Y2 = BlueArmy[TLS.EdgeList[i + 1, 0]].Location.Y;
                ((MainWindow)System.Windows.Application.Current.MainWindow).AICanvas.Children.Add(MSTLine);
            }

它会引发以下运行时错误: System.ArgumentException:“指定的Visual已经是另一个Visual的子级或CompositionTarget的根。”

我认为它不喜欢多个Children.Add呼叫。那么,从循环内部绘制一系列直线的正确方法是什么?由于其他原因,我宁愿不使用折线。

1 个答案:

答案 0 :(得分:1)

GUI元素是类,而不是结构。您必须为要创建的每一行创建一个新的MSTLine实例。