wpf自定义控件中使用自定义事件
2024-10-19 16:46:02
wpf自定义控件中使用自定义事件
1 创建自定义控件及自定义事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/// <summary> /// 演示用的自定义控件 /// </summary> public class ExtButton : Button { public ExtButton() { base .Click += ExtButton_Click; } private void ExtButton_Click( object sender, RoutedEventArgs e) { //定义传递参数 // RoutedPropertyChangedEventArgs<Object> args = new RoutedPropertyChangedEventArgs<Object>("1", "2", ControlLoadOverEvent); RoutedEventArgs args2 = new RoutedEventArgs(ControlLoadOverEvent, this ); //引用自定义路由事件 this .RaiseEvent(args2); } /// <summary> /// 声明路由事件 /// 参数:要注册的路由事件名称,路由事件的路由策略,事件处理程序的委托类型(可自定义),路由事件的所有者类类型 /// </summary> public static readonly RoutedEvent ControlLoadOverEvent = EventManager.RegisterRoutedEvent( "ControlLoadOverEvent" , RoutingStrategy.Bubble, typeof (RoutedPropertyChangedEventArgs<Object>), typeof (ExtButton)); /// <summary> /// 处理各种路由事件的方法 /// </summary> public event RoutedEventHandler ControlLoadOver { //将路由事件添加路由事件处理程序 add { AddHandler(ControlLoadOverEvent, value); } //从路由事件处理程序中移除路由事件 remove { RemoveHandler(ControlLoadOverEvent, value); } } } |
2 使用并绑定自定义控件的事件
1
2
3
4
5
6
7
8
|
<!--i为System.Windows.Interactivity引用--> <ext:ExtButton x:Name= "extButton" Content= "绑定自定义事件" HorizontalAlignment= "Left" Margin= "123,10,0,0" VerticalAlignment= "Top" Width= "95" > <i:Interaction.Triggers> <i:EventTrigger EventName= "ControlLoadOver" > <i:InvokeCommandAction Command= "{Binding ButtonLoadOverCommand}" CommandParameter= "{Binding ElementName=extButton}" ></i:InvokeCommandAction> </i:EventTrigger> </i:Interaction.Triggers> </ext:ExtButton> |
3 触发自定义事件后的操作
方式1
1
2
3
4
5
6
7
8
9
10
|
public DelegateCommand<Object> ButtonLoadOverCommand { get ; set ; } public void ButtonLoadOver(Object obj) { //这里的参数为自定义控件对象 ExtButton btn = obj as ExtButton; if (btn != null ) { var content = btn.Content; } } |
方式2
1
2
3
4
5
6
7
|
this .extButton.ControlLoadOver += ExtButton_ControlLoadOver; private void ExtButton_ControlLoadOver( object sender, RoutedEventArgs e) { var btn = (Button)e.Source; var str = btn.Content; }
|
最新文章
- js类型转化
- Unity Sprite Atlas Compression
- 机器学习职位 &; 面经
- thinkpad E450 fn快捷键设置
- Android照相机应用
- 无法连接到SQL Server 2008 R2
- Spring MVC 教程
- 【HDOJ】2510 符号三角形
- 【转】Windows 7下硬盘安装Ubuntu 14.04图文教程--不错
- 自定义UIViewController与xib文件关系深入分析
- 学习笔记:javascript内置对象:字符串对象
- Asp.net MVC 简单实现生成Excel并下载
- Mysql实现树形递归查询
- windows程序设计 显示一个窗口
- 李白打酒——C++
- day30(对象转json(java))
- 策略模式与SPI机制,到底有什么不同?
- Hibernate系列之基本配置
- spring boot 捕获filter异常 统一返回处理结果
- git配置教程
热门文章
- 基于虹软sdk,java实现人脸识别(demo)
- ECharts图表的小工具
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
- iTunes , iCloud 用吐了也没把照片给备份好
- 并发之ThreadLocal
- 怎么检测自己fastq的Phred类型 | phred33 phred64
- 质控工具之cutadapt的使用方法
- English trip EM2-PE-6B Teacher:Taylor
- Lowest Common Ancestor of a Binary Search Tree(Java 递归与非递归)
- python low版线程池