今天使用wpf开发一个小工具,用到了MouseLeftButtonDown的事件,但是发现点击后根本不会触发事件。
经过一番资料查找,发现是控件在捕获了MouseLeftButtonDown事件后,会将该事件的“Handled”设置为True,这个属性是用在事件路由中的,当某个控件得到一个RoutedEvent,就会检测Handled是否为true,为true则忽略该事件。
并且,控件本身的Click事件,相当于将MouseLeftButtonDown事件抑制(Supress)掉了,转换成了Click事件。所以,如果一定要使用这个事件的话,需要在初始化的函数里利用UIElement的AddHandler方法,显式的增加这个事件。
#https://msdn.microsoft.com/zh-cn/library/ms598899(v=vs.110).aspx
#
public MainWindow()
{
InitializeComponent();
button_get_trade_record.AddHandler(Button.MouseLeftButtonDownEvent, new MouseButtonEventHandler(this.button_get_trade_record_MouseLeftButtonDown), true);
}
如非必要,还是使用Click事件吧^_^