我知道,當你註冊一個對象到鼠標的附加事件時,你有內存泄漏。這就是爲什麼你需要使用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