路由事件与附加路由管理事件区别

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参考模型中负责服务注册、調用、路由、事件管理的是?(  )

}

我要回帖

更多关于 附加路由管理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信