假如我们自定义了一个控件模板,里面有一个Slider控件,如何给它添加事件呢?

 <Style TargetType="{x:Type s:ZoomBox}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type s:ZoomBox}"><Border CornerRadius="1"BorderThickness="0"Background="#EEE"BorderBrush="DimGray"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="Auto" /><ColumnDefinition Width="*" /></Grid.ColumnDefinitions><Slider Name="PART_ZoomSlider"VerticalAlignment="Center"HorizontalAlignment="Center"Margin="0"Ticks="25,50,75,100,125,150,175,200,225,250"Minimum="25"Maximum="250"SmallChange="25"LargeChange="25"Value="100"MinWidth="104"MinHeight="21"IsSnapToTickEnabled="True"IsMoveToPointEnabled="False" /><TextBlock Text="{Binding ElementName=PART_ZoomSlider, Path=Value}"Grid.Column="1"VerticalAlignment="Center"HorizontalAlignment="Right"Margin="0,0,14,0" /><TextBlock Text="%"Grid.Column="1"VerticalAlignment="Center"HorizontalAlignment="Right"Margin="1,0,2,0" /></Grid></Border></ControlTemplate></Setter.Value></Setter></Style>

这里要使用OnApplyTemplate方法,在该方法中找到Slider控件。

具体的,在自定义的ZoomBox类中,重写该方法,同时,在模板中,Slider的命名一定要是PART_Name形式,这样WPF就可以找到该控件,然后添加事件委托。


public Class ZoomBox
{
private Slider zoomSlider ;//slider成员变量public override void OnApplyTemplate(){base.OnApplyTemplate();#region 搜索控件的模板元素this.zoomSlider = Template.FindName("PART_ZoomSlider", this) as Slider;this.zoomSlider.MouseWheel+= new MouseWheelEventHandler(this.Cus_MouseWheel);if (this.zoomSlider == null)throw new Exception("PART_ZoomSlider template is missing!");#endregionthis.zoomSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(this.ZoomSlider_ValueChanged);}}

wpf给模板控件添加事件一相关推荐

  1. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

    第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是行不 通.如果大家开发的是WinForm中的事件,之前的定义可能没有什 ...

  2. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

    第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.N ...

  3. js动态添加控件服务器响应,JS实现动态给标签控件添加事件的方法示例

    本文实例讲述了JS实现动态给标签控件添加事件的方法.分享给大家供大家参考,具体如下: /p> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-trans ...

  4. GMap.NET入门详细教程【4】--------为控件添加事件,在鼠标单击时打点

    GMap.NET入门 下载 GMap.NET,并在VS中添加GMap.NET控件 初始化并加载一张地图 添加标记点.线.多边形 为控件添加事件,在鼠标单击时打点 快捷添加 选中窗体中的GMap控件,并 ...

  5. C#中为控件添加事件时提示“ dataGridView1_CellValidating”没有与委托“DataGridViewCellEventHandler”匹配的重载

    遇到的问题描述: 在xxx.designer.cs和xxx.cs中分别手动添加了函数和其定义,注意,是我自己一个一个敲代码敲进去的.结果编译时就没通过,提示问题如下: 在网上搜了一大圈,都找不到符合我 ...

  6. android listview和simpleadapter 给itme 中的控件添加事件

    simpleAdapter.setViewBinder(new SimpleAdapter.ViewBinder() { @Override public boolean setViewValue(V ...

  7. WPF对某控件添加右键属性

    代码创建右键属性 ContextMenu cm = new ContextMenu();MenuItem mi = new MenuItem();mi.Header = "打开此文件所有文件 ...

  8. 自动为DEV GridView控件添加SizeChanged事件

    实现gdv设置的抽象对象,不用每个gdv控件都添加sizechanged事件,只需执行gdc绑定sql函数,在其中会自动添加SizeChanged事件. //2016.5.13 by sngk //根 ...

  9. 金蝶EAS DEP脚本(5)给常用控件添加值改变事件

    给常用控件添加事件 一.F7 给F7添加值改变事件 //F7控件增加值改变监听 pluginCtx.getKDBizPromptBox("prmtCompany").addData ...

  10. 在asp.net中为Web用户控件添加属性和事件

    在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...

最新文章

  1. 用C#开发网络防火墙技术分析
  2. Android消息通信之无所不能的第三方开源项目EventBus
  3. Python编程基础:第十节 while循环While Loops
  4. 函授计算机与科学论文,函授计算机科学与技术论文
  5. 【笔记】opencv的python实现·像素处理 像素访问 alpha通道
  6. OpenCV F变换理论F-transform theory
  7. 单位脉冲信号与单位冲激信号的区别
  8. vue项目 一行js代码搞定点击图片放大缩小
  9. Struts2_4_ActionMap与ValueStack详解_Struct2的EL及常用标签_防止表单数据重复提交
  10. C++工作笔记-枚举类型的作用
  11. ndroid中View.inflate()
  12. 控制工程基础Chapter2 Mathematical models of systems
  13. html5a链接_html 超链接(a)详细讲解
  14. 【美化】小米平板IOS主题
  15. Mac Navicat Premium 12.1.13 破解版本下载
  16. linux切换声卡,Ubuntu中双声卡使用实例
  17. Android bootchart 工具使用
  18. WRF实例运行系列(1)
  19. python声音可视化_声音的可视化处理
  20. 轻松理解skip-gram模型

热门文章

  1. 申请高德地图开发key
  2. VC-应用程序正常初始化失败-0xc0150002
  3. HCIA-AI 3.0题库
  4. 深度linux关闭搜狗后没法输入法,Deepin v20无法安装搜狗官方输入法 for Linux,附原因和解决办法...
  5. 富文本编辑器上传图片不显示问题
  6. 公司股权结构设计的原则与因素
  7. python简说(二)list
  8. 台式计算机 蓝牙,台式电脑的蓝牙在哪里?台式机怎么打开蓝牙?
  9. A股的日内交易如何进行?
  10. 神经网络和深度学习(一)——初识神经网络