4

当我们对任何依赖对象使用任何附加属性时,我认为它实际上将属性和值映射到依赖对象。

例如<DockPanel><TextBlock x:Name="MyText" DockPanel.Dock="Top"/></DockPanel>

这里值“Top”通过依赖对象文本块“MyText”映射到 DockPanels DockProperty

但我的问题是这个映射什么时候处理?我问这个的原因是 DockPanel 的 DockProperty 是静态\共享的。所以它必须有这样的多个映射对(值,依赖对象)在某种内部字典中对其进行维护。(只是猜测)

所以这必须在依赖对象被销毁时进行垃圾回收。

所以现在我的观点是有什么方法可以让我知道是否发生了这样的附加属性处置(比如给定附加属性和依赖对象的某种解除或处置事件)?

此外,如果这种垃圾收集没有发生,那么这不是内存泄漏吗?

谢谢Vinit Sankhe。

4

2 回答 2

2

据我了解 WPF 中的新属性系统,DependecyObject 本身存储值。在您的示例中,这将是文本块。当您调用静态成员时不要感到困惑 - 它应该像这样实现:

element.SetValue(DockPanel.TopProperty, value);

所以没有发生静态字段存储。

于 2009-12-16T12:32:05.753 回答
1

我认为它是使用 Wea​​kReference 创建的。因此,会定期删除空引用。

于 2009-12-16T11:46:21.680 回答