[忆]WPF之Routed事件步骤

步骤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就是上面组织的路由参数

原文地址:https://www.cnblogs.com/zongchenjie/p/2743150.html