日期:2014-05-17  浏览次数:20807 次

WPF,请问事件触发器
EventTrigger类的RoutedEvent属性值是路由事件标识符,但是:

<EventTrigger RoutedEvent="Button.Click">

应该是ClickEvent的啊,为什么不是写的ClickEvent呢?

------解决方案--------------------
能把问题再说明白一点吗?不是很懂你想问什么
------解决方案--------------------
引用:
Quote: 引用:

能把问题再说明白一点吗?不是很懂你想问什么

RoutedEvent属性值的数据类型是RoutedEvent,应该是ButtonBase.ClickEvent啊,
为什么写的是RoutedEvent="Button.Click"


嗯,你说的对。
但就像依赖属性一样,实质上它本身是一个静态字段,但我们可以像使用普通属性一样使用它,是因为添加一个CLR属性又包装了一下。
路由事件类似,button有一个click事件对ClickEvent事件进行包装,所以我们直接用Click就可以了,实际上用的还是ClickEvent,只不过这样更符合我们一往的编程习惯。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

能把问题再说明白一点吗?不是很懂你想问什么

RoutedEvent属性值的数据类型是RoutedEvent,应该是ButtonBase.ClickEvent啊,
为什么写的是RoutedEvent="Button.Click"


嗯,你说的对。
但就像依赖属性一样,实质上它本身是一个静态字段,但我们可以像使用普通属性一样使用它,是因为添加一个CLR属性又包装了一下。
路由事件类似,button有一个click事件对ClickEvent事件进行包装,所以我们直接用Click就可以了,实际上用的还是ClickEvent,只不过这样更符合我们一往的编程习惯。

还是不明白,那至少写ButtonBase.ClickEvent不应该错吧,但还是报错


好吧,我们把这个事情简单点说。
你看你在xaml指定值的时候,其实是一个字符串,那其实是有内在的转换机制负责把这个字符串映射成具体的RoutedEvent的,那么你就可以理解成这个内在的转换器不识别Button.ClickEvent,而只识别Button.Click字符串。