我知道当你将一个对象注册到鼠标的附加事件时,会出现内存泄漏。这就是为什么你需要使用“弱事件模式”的原因。(点击此处查看)
但我有一个问题:如果你想使用它,就不能在XAML代码中定义处理程序。
对我来说,这意味着每个像这样的代码都会出现内存泄漏:
除非您在代码中明确删除处理程序(我怀疑任何人都不会这样做)。现在有一些事情我不理解:
对我来说,这意味着每个像这样的代码都会出现内存泄漏:
<SomeControl Mouse.MouseDown="MyHandler" />
除非您在代码中明确删除处理程序(我怀疑任何人都不会这样做)。现在有一些事情我不理解:
<Button Click="MyHandler" />
这段代码在某个地方使用了Mouse.MouseDown事件来检测按钮的点击。 通过使用反编译工具Reflector,我发现该事件使用了UIElement类的MouseDown。当我读取UIElement的代码时,我不理解:它没有WeakEventManager!
有人能解释一下UIElement如何接收来自Mouse.MouseDown的事件而不泄漏吗?