2012-04-26 15 views

Respuesta

10

barra de desplazamiento de una Los encabezados nd son parte de la grilla, pero no manejan doble clic, por lo que el evento "burbujea" hasta la cuadrícula.

La solución poco elegante es averiguar de alguna manera "lo que se hizo clic" por la media de las coordenadas del origen del evento o del mouse.

Pero también se puede hacer algo así (no probado):

<DataGrid> 
    <DataGrid.RowStyle> 
    <Style TargetType="{x:Type DataGridRow}"> 
     <EventSetter Event="MouseDoubleClick" Handler="OnRowDoubleClicked"/> 
    </Style> 
    </DataGrid.RowStyle> 
</DataGrid> 
+0

muchas gracias funcionó bien –

1

Puede comprobar los detalles sobre el punto de llegada, dentro del evento de clic del ratón -

DependencyObject dep = (DependencyObject)e.OriginalSource; 

// iteratively traverse the visual tree 
while ((dep != null) &amp;&amp; 
     !(dep is DataGridCell) &amp;&amp; 
     !(dep is DataGridColumnHeader)) 
{ 
    dep = VisualTreeHelper.GetParent(dep); 
} 

if (dep == null) 
    return; 

if (dep is DataGridColumnHeader) 
{ 
    DataGridColumnHeader columnHeader = dep as DataGridColumnHeader; 
    // do something 
} 

if (dep is DataGridCell) 
{ 
    DataGridCell cell = dep as DataGridCell; 
    // do something 
} 

Más información: http://www.scottlogic.co.uk/blog/colin/2008/12/wpf-datagrid-detecting-clicked-cell-and-row/

0

que he tenido el mismo problema y lo resolvió con esto:

DependencyObject src = VisualTreeHelper.GetParent((DependencyObject)e.OriginalSource); 
if (!(src is Control) && src.GetType() != typeof(System.Windows.Controls.Primitives.Thumb)) 
{ 
    //your code 
} 

He leído esto para conseguir la idea: How to detect double click on list view scroll bar?

espero que va a ayudar :)

Cuestiones relacionadas