当我们对任何依赖项对象使用任何附加属性时,我发现它实际上映射了属性和值与依赖项对象。
E.g。 <DockPanel><TextBlock x:Name="MyText" DockPanel.Dock="Top"/></DockPanel>
此处值“Top”通过依赖项对象文本块“MyText”与DockPanels DockProperty映射
但我的问题是此映射何时处理?我问这个的原因是DockPanel的DockProperty是静态\共享的。所以它必须具有这样的多个映射对(值,依赖对象)在某种内部字典中对其进行编码。 (只是一个猜测)
因此,在销毁依赖项对象时必须对其进行垃圾回收。
所以现在我的观点是,我是否应该知道如果发生这样的附加属性,就会发生这种情况(就像给定附加属性和依赖对象的某种失望或处置事件一样)?
此外,如果没有发生此类垃圾收集,那么这不是内存泄漏吗?
THX Vinit Sankhe。
答案 0 :(得分:2)
据我了解WPF中的新属性系统,DependecyObject本身存储了该值。 在您的示例中,这将是文本块。 当你调用静态成员时不要感到困惑 - 它应该被实现为:
element.SetValue(DockPanel.TopProperty, value);
所以没有静态字段存储。
答案 1 :(得分:1)
我认为它是使用WeakReference创建的。因此,定期删除空引用。