Как уведомить выгрузку прикрепленного свойства к классу, в котором оно определено? - PullRequest
2 голосов
/ 01 марта 2012

Для одного из требований в нашем проекте silverlight один из моих товарищей по команде написал специальный ToolTipManager.Нам бы хотелось иметь всплывающие подсказки, которые остаются видимыми даже после того, как мышь вышла из-под контроля / всплывающей подсказки.И удаляйте его только тогда, когда пользователь нажимает куда-то еще.Следовательно, этот пользовательский класс ToolTipManager.

В этом классе есть прикрепленное свойство ToolTipProperty, для которого существует OnToolTipPropertyChanged.В этом случае handeler ссылка элемента управления, к которому прикреплено свойство, добавляется в личный список в ToolTipManager.

    private static void OnToolTipPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var owner = (UIElement)d;
        var newValue = e.NewValue;
        if (newValue != null)
            // ElementsAndToolTips is dictionary.
            ElementsAndToolTips.Add(new WeakReference(owner), newValue); 
    }

Я хочу удалить ссылку элемента управления из списка, когда этот элемент управления удален.Где я могу это сделать.Есть ли какое-либо событие или метод, например, в присоединенном свойстве unload / detached или что-то в этом роде?

PS Свойство используется во многих различных элементах управления, было бы хорошо сделать изменения в классе ToolTipManager, а не во многих других местах.

...