路由事件的小结
针对:<!--<Button x:Name="button1" Width="80" Height="80" Button.Click="Button_Click" Click="Button_Click"/>-->
小结1:
<!--Button.Click="Button_Click"是安装方式,当前控件安装了Button.Click事件侦听器,当该事件被激发时,会调用Button.Click事件的处理方法Button_Click-->
小结2:
(A): xaml的<Grid x:Name="grid_1" Button.Click="Button_Click_1"/> 《===》 等价于 后台的 grid_1.AddHandler(Button.ClickEvent, new RoutedEventHandler(Button_Click_1)); //这种是“安装”方式(是路由事件的安装),推荐”经常“使用,这种方式可以给任何UIElement安装路由事件侦听器,甚至可以给宿主元素自己安装。说明:路由事件的安装只有(A)中这两种方法;而(B)中的两种方法属于CLR事件的注册(与直接事件的注册完全相同)。
(B) xaml的<Button x:Name="button1" Click="Button_Click"/> 《====》 等价于 后台的 button1.Click += Button_Click
提示:在(B)中,这两种方法,实际上,在后台代码中调用的都是 CLR事件包装器的add访问器,如下所示:
public event RoutedEventHandler Click
{
add{this.AddHandler(ClickEvent,value);}//封装了安装方式,相当于button1安装Button.Click路由事件,这与其他元素安装Button.Click路由事件没有区别
remove{.....}
}
//这种是“注册”方式(是CLR事件的注册,而非路由事件的安装),属于.net的老方法,它虽然内部封装了”安装方式“ ,但只能给宿主自己安装(这恰恰是相对于安装方式的缺点),比较陈旧(非WPF标准),建议”少用“。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器