WPF系列学习之三(路由事件)
路由事件实际上以一上 列三种方式出现。
1.与普通的.net事件类似的直接路由事件。它们起源于一个元素,并且不传递给其他元素。例如:MouseEnter事件。
2.在包含层次中向上传递的冒泡路由事件。例如:MouseDown事件就是一个冒泡路由事件。它首先由被单击的元素引发,接下来被该元素的父元素引发,然后被父元素的父元素引发,以此类推,直到WPF到达元素树的顶部为之。
3.在包含层次的向下传递的隧道路由事件。道道路由事件在事件到达恰当的控件之前为预览事件提供了机会。例如:通过PreviewKeyDown事件可以裁获是否按下了一个键,
附加路由事件:就是当一个控件没有定义某个路由事件时可以为其动态的添加事件如下:
<Window x:Class="StudyWPF.Hanlder"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Hanlder" Height="600" Width="400">
<StackPanel ButtonBase.Click="btn_Click">
<Button Name="btntest1">btntest1</Button>
<Button Name="btntest2">btntest1</Button>
<Button Name="btntest3">btntest1</Button>
<Button Name="btntest4">btntest1</Button>
</StackPanel>
后台中写: private void btn_Click(object send, RoutedEventArgs e)
{
MessageBox.Show("asdfasd");
}
</Window>
StackPanel没有定义Click事件所以可以在后台程序窗口初始化时为其附加路由事件如下:
也可以向上面代码一样添加Button.Click="后台定义的Click事件"
pnlButtons.AddHandler(Button.Click,new RoutedEventHandler(自己定义的Click事件));
而在btn_click事件中可以通过查看
if(send=="btnname1"){做它的事;}
else if (sender=="btnname2"){做它的事;}
else .....
也可以在按键中添加tag属性="123"
而在后台的click事件中添加如下判断:
if(sender.Tag=="asdas") {做它自己的事;}
隧道路由事件:
隧道路由事件的工作方式和冒泡路由事件相同,但方向相反。如PreviewMouseUP事件,首先在窗口中被引发,然后其中的Grid控件,接下来在StackPanel面板中被引发,依此类推,直到实际源头,它们都以Preview开头且它们都以冒泡路由事件之前被触发,
最新文章
- asp.net MVC3的局部缓存页面PartialCache.cshtml
- SetSysColors 修改系统颜色
- LightOJ1336 Sigma Function(约数和为偶数的个数)
- 仿淘宝详情转场(iOS,安卓没有这功能)
- Redis 学习资料整理
- 【cl】sikuli启动不了
- CentOS6.5升级为CentOS7.0
- 广度优先搜索BFS
- C# 集合详解 (适合新手)
- iOS-Core Text 入门
- [Jobdu] 题目1367:二叉搜索树的后序遍历序列
- 《jQuery权威指南》学习笔记之第2章 jQuery选择器
- IOS真机Profile时调用树中的对象只是显示地址,没有显示symbol name
- memcache的使用、版本使用和相关配置
- IIS 运行ASP.Net的基本配置(编辑中。。。)
- 学习笔记:python3,PIP安装第三方库(2017)
- fdisk命令
- 数据库设计---PowerDesigner(物理模型和概念模型)
- react 动态获取数据
- 转:折腾一晚上Bullet及Ogre相关工具的成果 -- 3Ds Max,Maya, blender, GameKit
热门文章
- springboot @ConfigurationProperties @EnableConfigurationProperties @Bean @ Component
- MySQL集群搭建
- 【BZOJ3065】带插入区间K小值 替罪羊树+权值线段树
- EasyNVR H5直播流媒体解决方案前端构建之:如何播放自动适配RTMP/HLS直播播放
- 【oracle案例】ORA-01102: cannot mount database in EXCLUSIVE mode
- 查看远程分支的log
- HTML 学习笔记 JQuery(盒子操作)
- python cookbook第三版学习笔记十三:类和对象(四)描述器
- css 改变图片灰度颜色
- UVA - 11624 Fire! 【BFS】