WPF 之Event

翻译 2007年09月17日 14:54:00

WPF中的Event

 

Routed Events 意指一个事件在一个相互关联的元素组成的树中传递,而非直接传递到一个特定的目标。

它可以在两个方向进行传递,Bubbling, tunneling

事件Routed的三种方式

1〉  Bubbling:事件由源头传递到元素树的最顶点

2〉  tunneling:事件由树的顶端传递的源头

3〉  direct:事件不在树中移动,表现方式类同标准的CLR事件

 

如何写Routed Event

示例:

Public static readonly RoutedEvent TapEvent =

EventManager.RegisterRoutedEvent(“Tap”,

RoutingStrategy.Bubble,

typeof(RoutedEventHandle),

typeof(MyButtonSimple)

);

// Provide CLR accessors for the event

Public event RoutedEventHandle Tap

{

       Add{AddHandler(TapEvent, value);}

       Remove{RemoveHandler(TapEvent, value);}

}

 

如何在Xaml关联事件

<Button Click=”blSetColor”>button</Button>

 

为什么要使用Routed Event

对于一组需要交互的控件,可以将父元素作为一个通用的事件监听者,然后使用同一个事件函数来处理交互。

示例如下

A grouped button set

XAML

<Border Height="50" Width="300" BorderBrush="Gray" BorderThickness="1">

  <StackPanel Background="LightGray" Orientation="Horizontal" Button.Click="CommonClickHandler">

    <Button Name="YesButton" Width="Auto" >Yes</Button>

    <Button Name="NoButton" Width="Auto" >No</Button>

    <Button Name="CancelButton" Width="Auto" >Cancel</Button>

  </StackPanel>

</Border>

 

C#

Private void CommonClickHandler(object sender, RoutedEventArgs e)

{

       FrameworkElement feSource = e.Source as FrameworkElement;

       Switch(feSource.Name)

       {

              Case “YesButton”:

                     // do something here

                     Break;

              Case “NoButton”

                     // do something

                     Break;

              Case “CancelButton”:

                     // do something

                     Break;

}

e.Handled = true;

}

自定义Event

示例如下:

 

//Invoke该事件

protected virtual void OnPipeValueChanged(double oldValue, double newValue)

        {

            RoutedPropertyChangedEventArgs<double> args = new RoutedPropertyChangedEventArgs<double>(oldValue, newValue);

            args.RoutedEvent = PipeControl.PipeValueChangedEvent;

            RaiseEvent(args);

        }

// 注册该事件

        public static readonly RoutedEvent PipeValueChangedEvent =

            EventManager.RegisterRoutedEvent("PipeValueChanged",

            RoutingStrategy.Bubble,

            typeof(RoutedPropertyChangedEventHandler<double>),

            typeof(PipeControl));

 

WPF中的EventTrigger和命令绑定

在上一篇《使用MVVM模式开发自定义UserControl》中,有一个重要的补充内容,就是WPF中的EventTrigger和命令绑定,在本篇中继续阐述。 如果单纯在Button中使用命令绑定,则其...
  • luminji
  • luminji
  • 2013年11月27日 14:01
  • 2402

WPF自定义路由事件

一 概要 本文通过实例演示WPF自定义路由事件的使用,进而探讨了路由事件与普通的CLR事件的区别(注:“普通的CLR事件”这个说法可能不太专业,但是,我暂时也找不到什么更好的称呼,就这么着吧,呵呵。...
  • tiana0
  • tiana0
  • 2014年09月01日 21:50
  • 4097

译文:C#中的弱事件(Weak Events in C#)

(原创翻译文章·转载请注明来源:http://blog.csdn.net/hulihui) 原文:Weak Events In C#: Different approaches to w...
  • alicehyxx
  • alicehyxx
  • 2016年01月01日 23:30
  • 2094

UFT基础_1-6悬停及web下拉框功能

一、基础篇 安装 录制浏览器脚本,打开百度,进行搜索 录制后的脚本Browser("uft_百度搜索").Page("uft_百度搜索").WebEdit("wd").Set "UFT" B...
  • tjjingpan
  • tjjingpan
  • 2017年11月11日 09:56
  • 123

C#事件回调委托EventHandler

C#预订了一个事件委托EventHandler,定义如下:  // Summary:     //     Represents the method that will handle an even...
  • friendan
  • friendan
  • 2015年01月10日 22:55
  • 4543

JS 中的 event?event:window.event什么意思?求详解。

JS 中的 event?event:window.event什么意思?求详解。2013-04-16 00:01flying607 | 分类:JavaScript | 浏览813次function Te...
  • forest_fire
  • forest_fire
  • 2016年03月21日 10:59
  • 3285

angularjs事件指令

ngClick 适用标签:所有 触发条件:单击 #html "LearnCtrl"> "click()">click me "click()">click me #script ...
  • liyun123gx
  • liyun123gx
  • 2015年07月10日 10:39
  • 2046

oracle如何查询会话级或系统级设置了哪些event

原文地址:http://www.xifenfei.com/3921.html
  • haofeifei111
  • haofeifei111
  • 2014年09月10日 14:30
  • 1291

MySQL之EVENT定时任务用法小结

MySQL之EVENT定时任务用法小结 在实际开发过程中,我们时常要有类似定时器的操作,即:定时触发某个操作。 如:每隔1s刷新一次页面、每隔3个月清除一下历史的数据。 现在的业务需求是定时取...
  • u011637069
  • u011637069
  • 2016年05月09日 18:39
  • 2663

Python 学习笔记四---event的使用

 Python提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位真,则其他线程等待直到信号接触。    Event对象实现了简单的线程通信机制,它提供了设置信号,清楚信号...
  • yuxin8000
  • yuxin8000
  • 2014年11月01日 16:16
  • 4363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF 之Event
举报原因:
原因补充:

(最多只允许输入30个字)