相关疑难解决方法(0)

内置的WPF控件如何管理其附加事件的事件处理程序?

我知道当您将对象注册到鼠标的附加事件时,您会发生内存泄漏.这就是你需要使用WeakEvent模式的原因.

我对此模式有疑问:如果要使用它,则无法在XAML代码中定义处理程序.

对我而言,这意味着每个代码都会泄漏:

<SomeControl Mouse.MouseDown="MyHandler" />
Run Code Online (Sandbox Code Playgroud)

除非你在代码中显式删除你的处理程序(我怀疑有人这样做).现在有一些我不明白的东西:

<Button Click="MyHandler" />
Run Code Online (Sandbox Code Playgroud)

此代码以某种方式使用Mouse.MouseDown事件的某处来检测按钮上的单击.通过对反射器的一些研究,我发现这个事件使用了UIElement类的MouseDown.当我读到UIElement的代码时,我不明白:没有WeakEventManager!

有人可以解释一下UIElement如何从Mouse.MouseDown接收没有泄漏的事件?

wpf events memory-leaks

5
推荐指数
1
解决办法
2100
查看次数

标签 统计

events ×1

memory-leaks ×1

wpf ×1