C# 在程序使用C运行时删除WPF元素

C# 在程序使用C运行时删除WPF元素,c#,.net,wpf,user-interface,C#,.net,Wpf,User Interface,我想在用户看到或使用该程序之前从他们那里获得一些信息。目前,我只是有一个黑色矩形隐藏我的GUI,前面有一个文本框。当信息输入框中时,我将其设置为矩形,并且矩形的可见性设置为折叠 我只在程序一开始就需要它们,我假设它们仍然存在,并在崩溃时占用内存。一旦我不再使用这些元素,有没有办法完全删除它们?为什么不弹出一个模式窗口,当它关闭时,它将自动从视觉/逻辑树中删除 比如说 Window win = new MyPopupWindow(); win.ShowDialog(); 使用某种标准UI元素,如

我想在用户看到或使用该程序之前从他们那里获得一些信息。目前,我只是有一个黑色矩形隐藏我的GUI,前面有一个文本框。当信息输入框中时,我将其设置为矩形,并且矩形的可见性设置为折叠


我只在程序一开始就需要它们,我假设它们仍然存在,并在崩溃时占用内存。一旦我不再使用这些元素,有没有办法完全删除它们?

为什么不弹出一个模式窗口,当它关闭时,它将自动从视觉/逻辑树中删除

比如说

Window win = new MyPopupWindow();
win.ShowDialog();

使用某种标准UI元素,如上面建议的模式窗口或silverlight中的ChildWindow,会更好

但是,折叠的元素不会给您带来任何内存问题,它们将从渲染管道中取出。但不透明度=0将保持不变。
如果确实要删除它,则父面板eg Grid有一个带有删除方法的子集合。

您可以使用专门用于启动屏幕的技术来完成此操作,如以下示例所示

两个区别:

使用ShowDialog而不是Show使窗口模块始终位于顶部并冻结执行

在main.thread上运行,而不是在单独的线程上运行

例如:

但是,你可能会考虑重新思考你的方法,因为它看起来不太用户友好。