步骤1、事件处理函数
比如:按钮的Click事件
步骤2、在事件处理函数中抛出(RaiseEvent)事件
方式1、重写系统事件,如重写Click事件,然后在其中抛出事件
方式2、在事件处理函数中抛出事件
步骤3、抛出事件的过程
组织RoutedEventArgs参数(或自定义的继承自RoutedEventArgs的类型(可以添加自定义的属性))
参数(RoutedEvent routedEvent, object source)
RoutedEvent参数是自定义的public static readonly的路由事件
object参数是拥有自定义路由事件的对象
抛出事件:某对象.RaiseEvent(args)
某对象可能是this,或其他,总之是拥有RaiseEvent方法的对象
args就是组织的RoutedEventArgs参数对象
步骤4、给需要的对象添加路由事件侦听器
方式1、用cs代码添加,例子:
this.gridMain.AddHandler(
Student.NameChangedEvent, //该参数是自定义public static readonly路由事件
new RoutedEventHandler(this.StudentNameChangedHandler) //指定路由事件处理函数
);
方式2、用xaml代码添加,例子:
<Grid x:Name="grid_1" local:TimeButton.ReportTime="timeButton_ReportTime">
此方式需要后台有这样的代码:
public event RoutedEventHandler ReportTime //TimeButton的方法
{
add { this.AddHandler(ReportTimeEvent, value); }
remove { this.RemoveHandler(ReportTimeEvent, value); }
}
步骤5、在路由事件处理函数中进行处理
路由事件处理函数参数(sender, e)
sender是正监听到事件方生的那个对象
e就是上面组织的路由参数