按照WPF的帮助说明,某些控件的路由事件被内部处理了,已经被标记为Handled,自行定义的事件处理代码便不再起作用了,有时候会很郁闷!
不过WPF提供了必要的方法。
1)使用相应的Preview事件。须注意隧道类型的事件是从根元素开始执行的。
2)使用AddHandler添加自定义的路由事件。
第一种解决办法就不在说明了
第二种以button为例,用AddHandler添加事件,如下
Btn.AddHandler(Button.MouseLeftButtonDownEvent, new MouseButtonEventHandler(Btn_MouseLeftButtonDown), true);
Btn.AddHandler(Button.MouseRightButtonDownEvent, new MouseButtonEventHandler(Btn_MouseRightButtonDown), true);
Btn.AddHandler(Button.MouseLeftButtonUpEvent, new MouseButtonEventHandler(Btn_MouseLeftButtonUp), true);
Btn.AddHandler(Button.MouseMoveEvent, new MouseEventHandler(Btn_MouseMove), true);
则以上四个所添加的事件就可以使用了