WPF路由事件
来源:互联网 发布:开淘宝网店有什么费用 编辑:程序博客网 时间:2024/05/22 02:24
与传统的winform不同,WPF的事件的发送者与事件的响应着并没有直接的关系,当然而这也可以是同一个对象。
事件仅仅是沿着逻辑树一直向上转发,如果有对象对事件进行响应,则会出发相应的动作。
举例来说。
新建一个窗口
<Grid Background="#FFB6B600" MouseUp="Grid_MouseUp_1" Name="g1"> <Grid Margin="20" Background="Red" MouseUp="Grid_MouseUp_1" Name="g2"> <Grid Margin="20" Background="#FF074AD8" MouseUp="Grid_MouseUp_1" Name="g3"> <Button x:Name="btn1" Content="Button" HorizontalAlignment="Left" Margin="182,103,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/> </Grid> </Grid> </Grid>
我们先不管中间的button,可以看到每一个grid都实现了Grid_MouseUp_1方法
private void Grid_MouseUp_1(object sender, MouseButtonEventArgs e) { Grid g = sender as Grid; MessageBox.Show(g.Name); }
这个时候,你单击其中一个gird,会发现每一个gird都会响应这个单击,因为每一个事件处理完成该事件以后,就会继续转发该事件,所以事件会沿着视图树传播到每一个grid对象中。视图树可以在文档大纲中看到。
刚才我们说了,事件的发送者和响应着是没有任何直接关系的。那么也就是说响应button的click事件的不一定是button 可以是任何对象。
我们添加如下代码
public MainWindow() { InitializeComponent(); g1.AddHandler(Button.ClickEvent, new RoutedEventHandler(Button_Click_1)); }
private void Button_Click_1(object sender, RoutedEventArgs e) { FrameworkElement f = sender as FrameworkElement; MessageBox.Show(f.Name); }
点击按钮以后,会将事件的的响应对象的名字打印出来。
这个时候会看到两个messagebox,一个提示btn1,就是按钮本身的响应,另外一个是g1就是grid的响应。
每一个对象都有一个eventhandler,需要响应那个事件,仅仅需要将对应的事件添加进去就可以了。
如g1添加对按钮点击事件的响应。
g1.AddHandler(Button.ClickEvent, new RoutedEventHandler(Button_Click_1));
- WPF:路由事件
- wpf路由事件
- WPF路由事件
- WPF 路由事件
- WPF之路由事件
- WPF中的路由事件
- WPF学习--路由事件
- WPF路由事件
- WPF笔记-路由事件
- WPF自定义路由事件
- wpf 理解路由事件
- WPF自定义路由事件
- WPF基础之路由事件
- WPF路由事件的学习
- WPF 路由事件 Event Routing
- WPF基础路由事件学习
- WPF学习之路由事件
- WPF路由事件学习笔记
- Mac 下的文字编辑软件 sublime text2
- 生死疆界--- 在new与delete之间
- 创建自定义视图(一)
- linux中断子系统及中断上下部分
- 创建主屏幕控件----App Widget
- WPF路由事件
- ibatis各个版本下载链接
- szieof
- FastDFS一个高效的分布式文件系统
- Q7--两倍问题
- FastDFS HOWTO - 文件及目录结构
- 关于 setPreviewDisplay(null) 无法正常显示的问题
- 广州集体户口办理未婚证流程
- linux学习入门5——linux系統常用命令(linuxcast.net)(日期、文件查看(head,tail等)、查看硬件信息、关机重启、归档压缩及查找命令)