我知道,当你注册一个对象到鼠标的附加事件时,你有内存泄漏。这就是为什么你需要使用WeakEvent pattern。内置的WPF控件如何管理其事件处理程序以附加事件?
我对这种模式有一个问题:如果你想使用它,你不能在XAML代码中定义你的处理程序。
对我来说,这意味着这样每个代码泄漏:
<SomeControl Mouse.MouseDown="MyHandler" />
除非你明确地删除您的处理程序代码(我怀疑任何人都不会说)。 现在有件事我不明白:
<Button Click="MyHandler" />
此代码以某种方式使用某处Mouse.MouseDown事件来检测按钮的点击。我发现这个事件使用了UIElement类的MouseDown。当我读取UIElement的代码时,我不明白:没有WeakEventManager!
能有人可以解释我收到了如何的UIElement事件从Mouse.MouseDown不泄漏?
我同意你的观点,但在处理XAML到连接的事件(我不谈论控件的事件,但事件Mouse.MouseDown)可能会泄漏,因为总是有它的参考。 在内部,Button类使用Mouse.MouseDown事件(UIElement具体)。我不知道为什么这不会泄漏。 – 2009-02-09 21:34:13