WPF路由事件

     我做了一个例子来探求路由事件的传递过程。
     在Window中添加一个Label和一个Button。
     
     为这三个元素添加分别添加tunneling事件PreviewMouseLeftButtonDown和bubbling事件MouseLeftButtonDown,同时为Button增加Click事件。代码如下:     
     

Code

 

  

     可以看到每个事件的代码其实就是在txtMessage中显示该事件的特征字符串。
     点击Label,txtMessage显示的文本是WT LT LP WP 。这意味着点击Label的时候,WPF首先从根元素Window开始沿着逻辑树下行直到事件的发起者Label,执行各个元素的tunneling事件;接着从Label开始向上直到Window,执行各个元素的bubbling事件。
     这四个事件的第二个参数MouseButtonEventArgs e是引用了同一个实例。可以分别在这四个事件中添加e.Handled = true来证明这个观点。
     接着点击Button,txtMessage显示的文本是WT BT ButtonClick。可以看到Button控件默认中止了bubbling事件。

 

 

posted on 2008-12-03 00:01  林骄  阅读(668)  评论(0)    收藏  举报