书名:WPF专业编程指南
作者:李应保
出版社:电子工业出版社
出版时间:2010-01
ISBN:9787121100116
一、RoutedEventArgs
- 处理常规.NET事件的委托函数一般有两个参数,一个是事件产生的对象,另一个是该事件所带的参数。
例如,处理打开文件的菜单处理程序一般具有下面的形式:
void OnOpenFile(object sender, EventArgs ea )
{
//处理该菜单
}
这里参数sender是object类型,即它可以是任何.NET类;EventArgs则是所有事件参数的基类。.NET程序员可以根据事件本身的要求在事件参数中加入自己的参数,通常的做法是从EventArgs或其派生类中派生出自己的类。
- 传递事件也是采用这种处理方式,例如在处理按钮Click事件时用的处理函数:
void OnDisplayLogicalTree(object sender, RoutedEventArgs ea)
{
if (selectElement != null)
{
DisplayTreeWindow createWin = new
DisplayTreeWindow();
createWin.CreateLogicalTree(selectElement);
createWin.Show();
}
}
-
DisplayLogicalTree中也有两个参数,一个是sender,类型为object;另一个是ea,类型为RoutedEventArgs。有些传递事件直接使用RoutedEventArgs类,有些事件则要使用RoutedEventArgs的派生类。EventArgs是RoutedEventArgs的基类,表7-1示出了RoutedEventArgs类中的属性:
表7-1 RoutedEventArgs中的属性 - WPF根据传递事件的种类,从RoutedEventArgs中大概派生出了50个类,而且这些类的数目还在快速增长。例如处理键盘事件有KeyBoardEventArgs、处理鼠标事件有MouseEventArgs等,也可以定义自己的RoutedEventArgs。
