使用Silverlights DataGrid时,我遇到了一些非常奇怪的鼠标事件行为:
我想要做的只是在用户左键单击我的DataGrid时调用某个方法。那应该不是什么大问题,但是......
使用
public void doLeftClick (object sender, MouseButtonEventArgs e) {
// some code
}
我正在定义EventHandler并使用
myDataGrid.MouseLeftButtonDown += doLeftClick;
我将它附加到活动中。
结果是只有在我的DataGrid的一列上单击鼠标左键时才会调用doLeftClick方法!
当我执行与上面完全相同的代码时,只为右键单击而不是左键单击每次我右键单击我的DataGrid时调用EventHandler,无论鼠标光标在哪里,只要它在内部控件的边界(这是我实际需要的左键单击以及我对此设置的期望是什么):
public void doRightClick (object sender, MouseButtonEventArgs e) {
// some code
}
myDatagrid.MouseRightButtonDown += doRightClick;
那么我做错了什么?我忘记了什么? 我真的很感激任何帮助:)
马克
答案 0 :(得分:1)
点击事件未冒泡。如果子控件将事件标记为处理,则会停止。
在这种情况下,DataGrid单元格正在使用左键单击(为了选择它们和/或将焦点放在编辑控件上)。
单元格不会以相同的方式使用右键单击,因此会向上传播到DataGrid控件。
列标题非常好,可以让左键单击传播。