wpf自定义控件中使用自定义事件
2021-09-08 21:12
标签:content move tar 移除 对象 btn padding change man 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 /// /// 演示用的自定义控件 /// public class ExtButton : Button { public ExtButton() { base.Click += ExtButton_Click; } private void ExtButton_Click(object sender, RoutedEventArgs e) { //定义传递参数 // RoutedPropertyChangedEventArgs args = new RoutedPropertyChangedEventArgs("1", "2", ControlLoadOverEvent); RoutedEventArgs args2 = new RoutedEventArgs(ControlLoadOverEvent, this); //引用自定义路由事件 this.RaiseEvent(args2); } /// /// 声明路由事件 /// 参数:要注册的路由事件名称,路由事件的路由策略,事件处理程序的委托类型(可自定义),路由事件的所有者类类型 /// public static readonly RoutedEvent ControlLoadOverEvent = EventManager.RegisterRoutedEvent("ControlLoadOverEvent", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventArgs), typeof(ExtButton)); /// /// 处理各种路由事件的方法 /// public event RoutedEventHandler ControlLoadOver { //将路由事件添加路由事件处理程序 add { AddHandler(ControlLoadOverEvent, value); } //从路由事件处理程序中移除路由事件 remove { RemoveHandler(ControlLoadOverEvent, value); } } } 2 使用并绑定自定义控件的事件 1 2 3 4 5 6 7 8 3 触发自定义事件后的操作 方式1 1 2 3 4 5 6 7 8 9 10 public DelegateCommand 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; } wpf自定义控件中使用自定义事件标签:content move tar 移除 对象 btn padding change man 原文地址:http://www.cnblogs.com/robertyao/p/7447315.html