gpt4 book ai didi

c# - UIElement.AddHandler() 与 .Event += 定义

转载 作者:可可西里 更新时间:2023-11-01 08:42:17 26 4
gpt4 key购买 nike

问题的第一部分:这 2 个事件注册之间有什么区别?

_popUp.AddHandler(PreviewMouseLeftButtonDownEvent, new MouseButtonEventHandler(PopUp_PreviewMouseLeftButtonDown));

_popUp.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(_popUp_PreviewMouseLeftButtonDown);

问题的第二部分:或最终与

popUp.Opened += PopUp_Opened;

最佳答案

根据 Redgate's Reflector , 没有区别。这两种方法最终都会调用内部方法 EventHandlerStore.AddRoutedEventHandler。这是 PreviewMouseLeftButtonDown 事件(在类 UIElement 中)的 add 访问器的反射器输出:

public void add_PreviewMouseLeftButtonDown(MouseButtonEventHandler value)
{
this.AddHandler(PreviewMouseLeftButtonDownEvent, value, false);
}

如您所见,它会为您调用 UIElement.AddHandler

在您编辑问题之前,您询问的是弹出窗口的 Opened 事件。在那种情况下,存在差异:首先,Opened 事件不是作为路由事件实现的,而是作为简单事件实现的,因此您甚至不能使用 AddHandler调用它。其次,反射器显示在 EventHandlerStore 中调用了一个不同的方法,该方法将处理程序添加到一个简单的委托(delegate)集合中。

关于c# - UIElement.AddHandler() 与 .Event += 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com