0

在使用 Silverlights DataGrid 时,我遇到了一些非常奇怪的鼠标事件行为:

我想要做的只是在用户左键单击我的 DataGrid 时调用一些方法。这应该不是什么大问题,但是...

public void doLeftClick (object sender, MouseButtonEventArgs e) {
    // some code
}

我正在定义 EventHandler 并使用

myDataGrid.MouseLeftButtonDown += doLeftClick;

我将它附加到活动中。

结果是 doLeftClick 方法仅在我左键单击 DataGrid 的一列时被调用!

当我只为右键单击而不是左键单击执行与上面完全相同的代码时,每次我右键单击我的 DataGrid 时都会调用 EventHandler,无论鼠标光标在哪里,只要它在边界内控制(这是我通过左键单击实际需要的,我希望从这个设置中得到什么行为):

public void doRightClick (object sender, MouseButtonEventArgs e) {
    // some code
}

myDatagrid.MouseRightButtonDown += doRightClick;

那我做错了什么?我忘记了什么?我真的很感激任何帮助:)

马克

4

1 回答 1

1

点击事件不会冒泡。如果子控件将事件标记为已处理,它将停止。

在这种情况下,左键单击被 DataGrid 单元格吃掉了(为了选择它们和/或将焦点放在编辑控件上)。

单元格不以相同的方式使用右键单击,因此向上传播到 DataGrid 控件。

列标题足够好,允许左键单击传播。

于 2011-09-15T14:06:48.040 回答