event的说法让没有定义routed event的对象也能接收到事件具体参考
你对这个回答的评价是?
这几天做的wpf项目涉及到弹出窗ロ更新父级ui,同时弹出窗口需要处理一定的逻辑后调用父级窗口的函数继续执行
这里就用到了.net事件传递、ui事件更新、wpf的路由事件。
1、什麼是.net事件传递(事件链)
在.NET程序设计时常常将一些辅助类的事件封装绑定到一个容器类(下面假定为ClassA类)中。于是经常碰到所谓事件傳递或转移问题:辅助类ClassB的事件不直接对客户,而是通过其容器类ClassA发布下面探讨实现中的两个问题:
事件绑定实现:非构造函数与构造函数中实现的区别
容器类事件链:事件访问器+=重载时添加事件链表
如果与ClassB的事件委托相同,ClassA可以直接+=绑定ClassB的事件然后传递发布出去,见洳下代码:
2)构造函数中实现存在的问题
如果在ClassA的构造函数中绑定事件由于类对象没有完成构建,对象仍然是null此时绑定事件将存在问题。参考如下ClassA代码:
上述代码运行时将抛出异常信息“未处理的异常: System.ArgumentException: 实例方法的委托不能具有空this”显然,该信息表明当前类对象仍然是null(即this是null)不能作为创建委托对象的参数。
特别注意:如果采用所谓委托推断方式即不用 new EventHandler() 建立委托对象,而是直接绑定事件:
此时既不會抛出异常,也不会调用(响应)ClassA的事件注册方法也就是说上述方法失效了!
3) 构造函数中实现的解决方法
如果要在ClassA的构造函数中绑定事件,则可以写一个符合事件委托的方法然后+=该方法即可,代码如下:
2、WPF的路由事件实现代码:
2)、wpf路由事件:
注意:代码为项目截取代碼不一定能编译通过。可自行修改一下
?SOA参考模型中负责服务注册、調用、路由、事件管理的是?( )
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。