wpf自定义控件中使用自定义事件

2021-09-08 21:12

阅读:613

标签: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


评论


亲,登录后才可以留言!