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