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

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;
         }

 

转载于:https://www.cnblogs.com/robertyao/p/7447315.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF(Windows Presentation Foundation)是一种用于创建功能丰富的用户界面的技术,它提供了许多预定义件,但也支持自定义件来满足更特定的需求。 在WPF,我们可以通过扩展现有的件或创建全新的件来自定义件。具体步骤如下: 1. 创建一个新的类,继承自WPF件类(如Button、TextBox等),这个新类将成为我们自定义件的基类。 2. 在新类添加需要的属性、方法和事件,以满足我们的特定需求。我们可以根据需要自定义件的外观、行为和逻辑。 3. 使用WPF的外观系统来定义定义件的视觉效果。可以使用XAML来定义件的样式、模板和触发器,也可以通过代码动态创建件。 4. 在件的构造函数初始化件的默认属性和事件。 5. 可选地,可以实现件的依赖属性,这样就可以通过绑定的方式将数据与件关联起来。 6. 在需要使用定义件的地方,将件添加到XAML布局或通过代码创建并添加到视觉树。 通过自定义件,我们可以实现更灵活、更具个性化的用户界面,同时提供更好的用户体验。自定义件可以适应各种复杂的场景和需求,从而提供更具创意和创新性的用户界面设计。 总结来说,使用WPF定义件的过程包括创建扩展自件基类、添加属性和事件定义外观效果、初始化属性和事件、实现依赖属性等步骤。自定义件能够满足特定需求,提供更灵活、个性化的用户界面。 ### 回答2: WPF(Windows Presentation Foundation)是微软推出的一种优秀的用户界面开发技术,允许开发者创建高度可定制的界面。而自定义件则是WPF的一种重要功能,它允许开发者根据自己的需求创建全新的用户界面元素。 自定义件实例如下: 我们假设要创建一个自定义按钮件,该按钮有独特的外观和交互行为。首先,我们需要在WPF应用程序定义一个新的自定义件类,该类继承自Button类。然后,我们可以在件类添加新的依赖属性以实现更多的定制化选项。 在件类,我们可以重写OnApplyTemplate方法以定义件模板使用的可视化元素。比如,我们可以定义一个Grid作为按钮的视觉部分,并在Grid添加一个Border作为按钮的背景。还可以添加鼠标事件处理程序以响应用户的交互动作。 接下来,我们需要在XAML文件使用我们自定义的按钮件。我们可以在Window或者其他容器引用自定义按钮,并设置其属性和事件处理程序。比如,我们可以设置按钮的背景颜色为蓝色,文本为“点击我”,并为按钮的Click事件添加一个处理方法。 通过这种方式,我们可以实现一个具有独特外观和交互行为的自定义按钮件。开发者可以根据自己的需求定义更多的自定义件,从而为用户提供更灵活和丰富的界面体验。 总而言之,WPF的自定义件是一种强大的功能,它允许开发者创建全新的用户界面元素,实现更高度的定制化和交互行为。通过合理地使用定义件,开发者可以为用户提供更好的用户界面体验。 ### 回答3: WPF(Windows Presentation Foundation)是一个用于创建 Windows 桌面应用程序的开发框架,它提供了丰富的图形化用户界面(GUI)设计工具和功能。在 WPF ,我们可以创建自定义件来满足特定的需求。 自定义件是指在原有的 WPF 件基础上进行扩展或重写,以满足特定场景的需求。通过自定义件,我们可以实现更加灵活的界面设计和交互方式。 创建自定义件的过程包括以下几个步骤: 1. 继承现有的 WPF 件:可以选择一个现有的 WPF 件作为基类,然后通过扩展或重写其功能来实现自定义件。例如,我们可以继承 Button 件,并添加一些额外的属性和事件来实现一个特定的按钮效果。 2. 添加依赖属性:依赖属性是 WPF 一种特殊的属性,它可以提供数据的绑定和通知机制。通过添加依赖属性,我们可以在自定义定义可以被外部代码修改和引用的属性。 3. 创建件模板:件模板定义件的外观和布局方式。可以通过 XAML 或代码方式创建件模板,并将其应用到自定义。 4. 添加样式和模板绑定:可以为自定义件添加样式,定义其在不同状态下的外观效果。同时,可以通过模板绑定将件属性和模板的元素进行关联。 创建完成后,我们可以在 XAML 使用定义件,就像使用任何其他的 WPF 件一样。可以设置自定义件的属性、订阅事件,并将其嵌入到应用程序的界面。 总的来说,WPF 的自定义件功能可以帮助开发者实现更加灵活和个性化的用户界面设计。通过继承和扩展现有的件,添加依赖属性和件模板,我们可以创建出符合特定需求的自定义件,并在应用程序灵活使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值