我已经阅读了一些关于相关问题的文章,这一篇似乎不一致。
我有一个数据网格控件,我需要在单击鼠标时捕获鼠标位置。我有代码在mouseup和mousedown事件处理程序中执行此操作。 mousedown是我想要的,但那个事件永远不会被解雇。我把代码放在那里并设置一个断点,它永远不会到达那一点。然而,mouseup就像它应该的那样触发,但它不是我需要的事件,而且我得到了不可预测的结果。
是否有任何文章可以解释发生了什么?我认为它是某种路由事件问题。但是为什么mouseup会工作但是mousedown不行?如何修复我的代码,以便所有事件在应该发生时触发?
答案 0 :(得分:0)
问题正在发生,因为数据网格中的单元格正在捕获MouseDown事件。您可以尝试通过以下方式在代码中订阅该事件:
DataGridName.AddHandler(MouseDownEvent, new MouseButtonEventHandler(DataGridName_MouseDown), true);
或者,如果那不是您想要做的,我相信,还有一个PreviewMouseDown事件已经分配给您可以使用的DataGrid。
我希望这会有所帮助。