Como os controles WPF internos gerenciam seus manipuladores de eventos para um evento anexad

Sei que quando você registra um objeto nos eventos anexados do mouse, há vazamentos de memória. É por isso que você precisa usarWeakEvent pattern.

Tenho um problema com este padrão: se você quiser usá-lo, não poderá definir seu manipulador no código XAM

Para mim, significa que todo código como esse vaza:

<SomeControl Mouse.MouseDown="MyHandler" />

A menos que você remova seu manipulador explicitamente no código (e duvido que alguém faça isso). Agora há algo que eu não entendo:

<Button Click="MyHandler" />

Este código de alguma forma usa em algum lugar o evento Mouse.MouseDown para detectar um clique no botão. Com alguma pesquisa com refletor, descobri que este evento usa MouseDown da classe UIElement. E quando li o código de UIElement, não entendi: não há WeakEventManager!

Pode alguém me explicar como o UIElement recebe eventos do Mouse.MouseDown sem vazamento?

questionAnswers(1)

yourAnswerToTheQuestion