现在大多数控件都是基于事件驱动的,WPF也不例外,所有的控件,包括Window(同样也是集成控件类)公布了一些你可以实现的事件,你可以实现这些事件,这意味着当这些事件发生的时候你会收到通知,这样你可以应对怎么处理这些事件。
事件有很多种,但是大部分事件是用来相应用户使用键盘和鼠标和应用程序之间的交互的,在大部分的控件中,你会发现都有KeyDown,KeyUp,MouseDown,MouseUp等等类似的事件。
我们后续将会看到更多的事件相互之间的关联性,因为这是一个很复杂的主题,但是现在你应该要知道怎么样关联一个XAML事件,我们来看看这个例子:
<Window x:Class="WpfTutorialSamples.XAML.EventsSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="EventsSample" Height="300" Width="300">
<Grid Name="pnlMainGrid" MouseUp="pnlMainGrid_MouseUp" Background="LightBlue">
</Grid>
</Window>
现在我们注意我们已经定义了一个MouseUp事件,并且函数的名字是palMainGrid_MouseUp,这个方法必须在后台代码中定义,并且使用事件中的函数签名。例如:
private void pnlMainGrid_MouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("You clicked me at " + e.GetPosition(this).ToString());
}
这个事件定义使用了一个叫 MouseButtonEventHandler的 委托,这个就是你定义的,它有两个参数,一个是sender,就是激发的事件,还有一个是MouseButtonEventArgs, 它里面包含了很多的有用信息,我们用他来获取当前用户点击的坐标位置。
很多事件会使用相同的委托来,比如MouseUp和MouseDown都使用了MouseButtonEventArgs 委托,当使用MouseLevel事件的时候,当定义事件的时候, 你必须清楚的知道它使用那些委托,如果你不知道,你可以查下文档参考下。