WPF,自定义的路由事件为什么不冒泡
项目中创建了一个继承自Control的自定义控件,名为"MyControl",并且创建了一个依赖项属性Value和一个冒泡路由事件ValueChanged事件。下面是使用MyControl的结构:
<Grid local:MyControl.ValueChanged="grid_ValueChanged">
<local:MyControl />
<local:MyControl />
<local:MyControl />
</Grid>
我的问题是,既然MyControl的ValueChanged事件被定义为冒泡型的路由事件,在Grid中使用附件事件响应ValueChanged事件,为什么行不通呢?如此而来,定义成冒泡事件有何意义呢? --------------------编程问答-------------------- 求解....... --------------------编程问答-------------------- 你想它怎么冒泡?Grid上面就没有相同事件给它冒泡,冒泡必须是有相同事件才能做到,同时必须将事件定义为路由事件,且策略为RoutingStrategy.Bubble。我这里既看不到你事件的定义,不知道是否正确,又没看到外部有相同事件的控件来接收这样的冒泡事件,根本冒不起来嘛。 --------------------编程问答--------------------
1:首先,我的路由事件是定义为RoutingStrategy.Bubble的(由于篇幅有限,这里就没有列代码)。
2:其次,Grid没有相同事件给它冒泡,可不可以使用附加事件呢?Grid没有Click事件,但同样可以使用Button.Click响应Click事件。
3:如果凡事都要外部有相同的事件才能冒泡,那么,就一定是预定义的事件了吧,自定义的路由事件外部怎么会有呢? --------------------编程问答-------------------- 有人知道吗? --------------------编程问答-------------------- 你先试试你的事件是否能正常工作,也就是将事件处理函数设置到MyControl上面,我不知道你的MyControl 是如何定义出来的,自然无法模仿,我也没那么多时间来写控件测试。如果仅仅要引发内部控件的事件,这应该是可以的,但是这个事件需要内部控件值真的发生了改变,内部事件本身能触发才行,你现在只在外部注册了附件事件,内部没有注册,无法知道内部事件是否触发了,问题说不定是内部事件本身就没有引发而不是无法冒泡。 --------------------编程问答--------------------
将事件处理函数设置到MyControl上,是能够正常工作的 --------------------编程问答-------------------- 有人知道吗? --------------------编程问答-------------------- 有人知道吗?
补充:.NET技术 , C#