Прикрепленные свойства в WPF и событиях проводки - PullRequest
1 голос
/ 25 января 2011

У меня есть прикрепленное свойство (например, его заглавная буква текста внутри TextBox). Я должен подписаться на событие TextChanged TextBox, чтобы использовать его каждый раз при обновлении текста.

public class Capitalize
{
    // this is for enabling/disabling capitalization
    public static readonly DependencyProperty EnabledProperty;
    private static void OnEnabledChanged(
        DependencyObject d, 
        DependencyPropertyChangedEventArgs e)
    {
        var tb = d as TextBox;
        if ((bool)e.NewValue)
        {
            tb.TextChanged += new TextChangedEventHandler(tb_TextChanged);
        }
        else
        {
            tb.TextChanged -= new TextChangedEventHandler(tb_TextChanged);
        }
    }
}

Как мы видим, мы добавляем обработчики событий в TextBox, который (если я правильно понимаю) создает сильную ссылку. Означает ли это также, что из-за этой сильной ссылки GC не может собирать TextBox? Если да - в какой момент я должен подключить событие, чтобы можно было собрать TextBox?

1 Ответ

1 голос
/ 25 января 2011

Ссылка идет наоборот, т.е. текстовое поле содержит ссылку на обработчик события.Так что нет возможности утечки памяти.

...