指定的元素已经是另一个元素的逻辑子元素.首先断开它

Gui*_*shy 17 c# wpf frameworkelement

这是我想要将FrameworkElement附加到新窗口以将其发布到PNG文件时的错误.

所以我的想法是删除父子链接,调用我的方法,并使用以下代码再次添加子代:

this.RemoveLogicalChild(element);
PublishFrameworkElement(element, stream);
this.AddLogicalChild(element);
Run Code Online (Sandbox Code Playgroud)

但我得到了完全相同的错误......

我在这里看了很多关于这个错误的问题,但没有回答我的问题我错过了什么?

编辑:这是适合我的代码:

var element = _GeneratedContent as FrameworkElement;
var ParentPanelCollection = (element.Parent as Panel).Children as UIElementCollection;
ParentPanelCollection.Clear();

FileStream stream = [...]

if (element != null)
{
    PublishFrameworkElement(element, stream);
    ParentPanelCollection.Add(element);
}
stream.Close();
Run Code Online (Sandbox Code Playgroud)

Cle*_*ens 18

如果element是Panel的子级(例如Grid),则必须将其从Panel的Children集合中删除.如果将其设置为Contenta ContentControl,则必须将该Content设置为null(或其他任何不是element).


Pio*_*yna 5

纪尧姆

您可以尝试在RemoveLogicalChild之后另外使用RemoveVisualChild方法:

this.RemoveLogicalChild(element);
this.RemoveVisualChild(element);
PublishFrameworkElement(element, stream);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,彼得.