RemoveFromVisualTree将所有子控件设置为null
本文关键字:设置 null 控件 RemoveFromVisualTree | 更新日期: 2023-09-27 18:25:44
FrameWorkElement.RemoveFromVisualTree()
是否删除父控件的所有子控件或将其设置为null?
例如之间有区别吗
var s = (LayoutGroup)sender;
foreach (var child in s.Children)
{
child = null;
}
s.RemoveFromVisualTree();
和
var s = (LayoutGroup)sender;
s.RemoveFromVisualTree();
RemoveVisualChild删除两个视觉效果之间的父子关系。与将两个引用都设置为null相同。正如@slugster提到的那样,这不会在Visuals上触发GC。
http://msdn.microsoft.com/en-us/library/system.windows.media.visual.removevisualchild.aspx
我认为您也可能将WPF中的可视化树和逻辑树混为一谈。
视觉树描述了与控件相关的视觉对象的结构,每个对象都基于System.Windows.Media.Visual
。当您通过添加或覆盖模板来更改控件的外观时,您正在使用可视化树。
与跟踪对象关系的逻辑树相反,资源可以包含任何类型的对象。
更多信息请点击此处:WPF 中的树