路由事件的宿主是那些有 UI 显示功能的界面元素,而附加事件是那些没有 UI 显示功能的元素,其本质还是路由事件,只是路由事件的宿主不一样。附加事件只是路由事件的一种用法而已。
XAML:
1 | <Window x:Class="WpfApp1.MainWindow" |
▲ 只做了一个按钮触发一下
附加事件宿主,Student 类:
1 | public class Student |
C# behind 代码:
1 | /// <summary> |
理论上,上面已经算一个附加事件了。
▲ 点击按钮,弹出学号
因为 Student
不是继承 UIElement
类,所以,没有 AddHandler
和 RemoveHandler
两个方法,也没有哦 RiaseEvent
方法。
根据微软规定,可以升级一下:
Student 类:
1 | public class Student |
C# Behind:
1 | /// <summary> |
附加事件,只是路由事件的一种用法,而非一个新概念。
参考: 《WPF 深入浅出》 - P171