1.路由
起点与终点间有若干个节点,从起点出发后经过每个中转站都要做出选择,最终以正确(最短或者最快)的路劲到达终点。
2.路由事件的产生
和依赖属性、附加属性一样,从节省资源的角度,从事件(消息通知方式)进行了升级。
与依赖属性一样,可以通过传统的方式使用路由事件,但具有更强的传播能力----可以在元素叔向上冒泡,和向下隧道传播,并且沿着传播路径被事件处理器处理。
路由事件由只读的静态字段表示,在静态构造函数中注册,并通过标准的.NET事件进行封装。
3.设置路由事件侦听器
所有的UI控件都有AddHandler方法用于添加侦听器和绑定事件处理器
用法:
this.UIName.AddHandler(UI.XEvent,new RoutedEventHandler(fuantion));
private void fuantion(object sender,RoutedEventArgs e){
...}
这时候的sender为拥有侦听器的控件,而不是消息的产生者。要查看源头使用(e.OriginalSource as FrameworkElement).Name
Demo:设置UI 一个Grid 的含一个Grid 含两个Canvas含两个button
<Grid x:Name="gritRoot" Background="Lime">
<Grid x:Name="gritA" Margin="10" Background="Blue">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Canvas x:Name="canvasLest" Grid.Column="0" Background="Red" Margin="10">
<Button x:Name="buttonLeft" Content="Left" Width="40" Height="100" Margin="10"/>
</Canvas>
<Canvas x:Name="canvasRight" Grid.Column="1" Background="Yellow" Margin="10">
<Button x:Name="buttonRight" Content="Right" Width="40" Height="100" Margin="10"/>