0

我有一个静态画布。我添加了一个形状运行时。然后我尝试添加一个内容控件来保存形状。但是由于形状已经添加到画布中,它给出了一个逻辑子错误。任何人都可以帮助我如何完成这项工作,保持稍后动态添加内容控件的逻辑?

XAML:内部窗口标签保留一个空白画布,名称为“cnv”

C#:

        Ellipse ee = new Ellipse();
        ee.Width = 100;
        ee.Height= 50;
        ee.Fill= Brushes.Red;
        ee.Name = "el";
        hidden.Children.Add(ee);

        ContentControl cc = new ContentControl();
        cc.BorderBrush = Brushes.Black;
        cc.Content = ee;

        cnv.Children.Add(ee);
4

2 回答 2

1

正如 Kent 指出的那样,一个元素只能有一个父元素,所以只需删除该行:

    hidden.Children.Add(ee);

从您的代码中,您也调用:

    cnv.Children.Add(ee);
于 2009-11-10T11:42:08.283 回答
0

AUIElement只能有一个父级,因此您需要先将其从 中删除,Canvas然后再将其重新安置在其他地方:

hidden.Children.Remove(ee);
cc.Content = ee;
cnv.Children.Add(ee);

PS。几乎可以肯定,有一种更好、更简洁的方式来做你想做的任何事情,而不是像你一样在视觉树中玩耍。

于 2009-11-10T11:39:33.127 回答