C# 必须先断开指定子项与当前父项Visual的连接,然后才能附加到新的父项Visual

C# 必须先断开指定子项与当前父项Visual的连接,然后才能附加到新的父项Visual,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我是WPF的新手,尝试构建我的第一个应用程序,它是多流的multiviewer,用于学习 我有24个多媒体元素在主窗口,我想全屏选定的多媒体元素时,将有一个更多的点击,以尽量减少这个全屏媒体 代码是这样的 foreach (var item in MediaElements) { item.LoadedBehavior = MediaState.Manual; item.MouseEnter += mediaElement1_MouseEnter; item.MouseL

我是WPF的新手,尝试构建我的第一个应用程序,它是多流的multiviewer,用于学习

我有24个多媒体元素在主窗口,我想全屏选定的多媒体元素时,将有一个更多的点击,以尽量减少这个全屏媒体

代码是这样的

foreach (var item in MediaElements)
{
    item.LoadedBehavior = MediaState.Manual;
    item.MouseEnter += mediaElement1_MouseEnter;
    item.MouseLeave += mediaElement1_MouseLeave;
    item.Loaded += mediaElement1_Loaded;
    item.MouseLeftButtonUp += (o, args) =>
    {
        if(!fullscreen)
        {
            ListOfMedia.Children.Remove(item);
            this.Content = item;
            this.WindowStyle = WindowStyle.None;
            this.WindowState = WindowState.Maximized;
        }
        else
        {
            this.Content = ListOfMedia;
            ListOfMedia.Children.Add(item); 
            this.WindowStyle = WindowStyle.SingleBorderWindow;
            this.WindowState = WindowState.Normal;
        }

        fullscreen = !fullscreen;
    };
}
当我第一次点击它时,它工作得很好,窗口的屏幕大小达到了最大,但是当我下次点击它以最小化它时,有一个例外对我说

System.ArgumentException: 'Must disconnect specified child from current parent Visual before attaching to new parent Visual.'
我检查了一些StackOverflow问题,但没有找到正确的解决方案,有人在谈论从父树中删除子树的扩展方法,我写了这个扩展方法,但我不知道问题出在哪里,问题背后有什么想法?我必须删除的内容以及正在发生的事情


请告诉我这里发生了什么。

整个想法是,如果一个元素已经有一个逻辑父元素,那么您就不能将它分配为另一个元素子元素

设想以下设置:

CtCtrl = ContentControl

StPnl = StackPanel

br1 = Border

if(CtCtrl.Content != null)
{
   var br1 = CtCtrl.Content as Border;
   StPnl.Children.Add(br1);
}
上述操作将导致System.InvalidOperationException:'指定的元素已经是另一个元素的逻辑子元素。先断开连接。“

在将该元素添加到
StackPanel
之前,可以通过以下代码轻松地将其孤立:

if(CtCtrl.Content != null)
{
   var br1 = CtCtrl.Content as Border;
   CtCtrl.Content = null;
   StPnl.Children.Add(br1);
}

例外情况就会消失

这个。内容=项目;将窗口的内容设置为项目。再次删除时,请尝试使用项。Parent=null@NawedNabiZada父属性为只读