silverlightdatagridevent-handlingmouseleftbuttondown

Strange problem with the left-click on a Silverlight DataGrid


I am experiencing some very strange mouse-event behaviour when working with Silverlights DataGrid:

What I want to do is simply call some method when the user left-clicks over my DataGrid. That shouldn't be much a problem, but ...

With

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

i am defining the EventHandler and with

myDataGrid.MouseLeftButtonDown += doLeftClick;

i am attaching it to the event.

The result of that is that the doLeftClick method only gets called when i left-click over one of the columns of my DataGrid!

When i am doing the exact same code as above only for the right-click instead of the left-click the EventHandler gets called everytime i right-click over my DataGrid regardless where the mouse cursor is, as long it is inside the boundaries of the control (which is what i actually need with the left-click and what's the behavior i would expect from this setting):

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

myDatagrid.MouseRightButtonDown += doRightClick;

So what am i doing wrong ? What am i forgetting ? I really would appreciate any help :)

Marc


Solution

  • The click events are not bubbled up. If a child control marks the event as handled it stops.

    In this instance the left click is being eaten by the DataGrid cells (in order to select them and/or give focus to edit controls).

    Right click is not used by the cells in the same way, so propagates up to the DataGrid control.

    The column headers are nice enough to allow the left click to propagate.