2012-04-26 4 views

Antwort

10

Scrollbar ein nd header sind Teil des Grids, aber behandeln nicht Doppelklick, so "sprudelt" das Ereignis bis zum Raster.

Die unelegante Lösung ist, etwas herauszufinden, "was geklickt wurde" durch die Quelle der Ereignisse oder Mauskoordinaten.

Sie können aber auch so etwas wie die (nicht getestet) tun:

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

danken Ihnen helfen, es funktionierte gut –

1

Sie können prüfen, klickten doppelt die Details über den Hit-Punkt innerhalb der Mausklickereignis -

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 
} 

Mehr Info: http://www.scottlogic.co.uk/blog/colin/2008/12/wpf-datagrid-detecting-clicked-cell-and-row/

0

ich das gleiche Problem hätte und löste es mit diesem:

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

ich das gelesen habe, zu erhalten die Idee: How to detect double click on list view scroll bar?

ich hoffe, es wird sehr viel :)

Verwandte Themen