Хорошая точка зрения. Прикрепленные события являются внешними ссылками.
ю, что когда вы регистрируете объект для прикрепленных событий мыши, у вас возникают утечки памяти. Вот почему вам нужно использоватьСлабый образец.
У меня проблема с этим шаблоном: если вы хотите использовать его, вы не можете определить свой обработчик в коде XAML.
Для меня это означает, что каждый подобный код просачивается:
<SomeControl Mouse.MouseDown="MyHandler" />
Если вы явно не удалите свой обработчик в коде (и я сомневаюсь, что кто-нибудь так поступит) Теперь есть кое-что, чего я не понимаю:
<Button Click="MyHandler" />
Этот код где-то использует событие Mouse.MouseDown для обнаружения нажатия на кнопку. Проведя некоторые исследования с отражателем, я обнаружил, что это событие использует MouseDown класса UIElement. И когда я читаю код UIElement, я не понимаю: WeakEventManager не существует!
Может кто-нибудь объяснить мне, как UIElement получает события от Mouse.MouseDown без утечки?