4

Когда мы используем любое присоединенное свойство против любого объекта зависимостей, я хранил его, фактически сопоставляя свойство и значение с объектом зависимости.Сбор мусора при прикрепленном зависимом объекте уничтожен отключен

E.g. <DockPanel><TextBlock x:Name="MyText" DockPanel.Dock="Top"/></DockPanel>

Здесь значение «Вверх» отображается с DockPanels DockProperty через зависимостей объекта TextBlock «MYTEXT»

Но мой вопрос, когда расположено это отображение? Причина, по которой я прошу об этом, - DockProperty от DockPanel, является static \ shared. Таким образом, он должен иметь такие множественные сопоставления Pair (Of value, объект dependency), которые были связаны с ним в каком-то внутреннем словаре. (просто догадка)

Так что это должен быть сбор мусора, когда объект зависимости уничтожен.

Итак, теперь моя точка зрения заключается в том, есть ли какой-либо способ, которым я должен знать ЕСЛИ такое деприксирование присоединенного имущества происходит (например, какое-то событие для диспетчеризации или удаления для данного прикрепленного свойства и объекта зависимостей)?

Также, если такая сборка мусора не имеет места, разве это не утечка памяти?

Thx Vinit Sankhe.

ответ

2

Как я понимаю новую систему свойств в WPF, сам DependecyObject сохраняет это значение. В вашем примере это будет текстовый блок. Не запутаться, как вы вызываете статический член - это, как предполагается, будет осуществляться как:

element.SetValue(DockPanel.TopProperty, value); 

Так что не происходит без статического хранения в полевых условиях.

1

Я думаю, что он был создан с использованием WeakReference. Поэтому удаление пустых ссылок происходит периодически.