路由事件 是在XAML对象中的某个子元素传递到每个后续父元素,也可以说XAMl对象子元素与包含他们的父元素是一种向上的冒泡机制,这种冒泡机制是一种路由事件方式。
一个大的Canvas 上面中间有个矩形元素,canvas 有个MouseLeftButtonDown事件 , 而矩形元素Rect 也有个MouseLeftButtonDown事件,这时候,鼠标点在矩形元素上点击左键时RECT会执行该MouseLeftButtonDown事件 ,canvas也会执行该MouseLeftButtonDown事件,这就是路由事件。
取消路由事件的方法:
设置Handled=true silverlight会认为这个路由事件已标志为被处理,就不会出现上述情况。
private void Rect_MouseLeftButtonDown(object sender,MouseButtonEventArgs e)
{
e.Handled=true;
//其他方法
tbkRect.Text="忽略路由事件";
}
路由事件的范围也极其有限,在Silverlight中,所有路由事件来自UIElement类,一共只有8个,它们是:
KeyDown,
KeyUp,
GetFocus,
Lost Focus,
MouseLeftButtonDown,
MouseLeftButtonUp,
MouseMove
和
BindValidationError。