C#WPF-完全删除对象和所有子项

时间:2018-07-18 18:34:06

标签: c# wpf

我有一个网格,正在将其用作一种“弹出”控件。将为单击的每个特定项目动态创建此控件。

请注意,此控件具有其他层次的控件,包括子元素,其他网格和堆栈面板。

要关闭它,我有一个“取消”按钮,当前我正在将父对象投射到EventHandler中,并使用[castedobject].Children.Remove(popup)关闭该对象。

但是,当我在程序去重新创建Grid窗口时单击另一个“父级”时,却遇到了很多异常,因为即使“当前分配”了相同的对象,它们仍试图重新分配为子级

我的问题是:我使用什么命令(关闭时)永久删除所有相互的子代及其关联?这似乎是动态控制环境中的标准配置。我确信我缺少一些简单的东西,但是我尝试了在搜索Stack Overflow和Google时发现的方法,但是仍然遇到相同的异常。

colorCancelBtn.Click += delegate (object source, RoutedEventArgs e)
        {
            container.Children.Clear();
            Grid temp = (Grid)dataObject.FindName("colorPicker");
            Grid parent = (Grid)temp.Parent;
            parent.Children.Remove(temp);
            dataObject.UnregisterName("colorPicker");
        };

1 个答案:

答案 0 :(得分:2)

只需先删除网格的所有子代:

SomeGrid.Children.Clear();

然后您可以在不保留任何其他对象引用的情况下删除网格。