2012-04-26 19 views
6

डेटा ग्रिड MouseDoubleClick घटना क्यों निकाल दिया जाता है जब मैं दोगुना स्क्रॉलबार पर या शीर्ष लेखजब आप स्क्रॉलबार पर डबल क्लिक करते हैं तो DataGrid MouseDoubleClick ईवेंट क्यों निकाल दिया जाता है?

पर क्लिक करें वहाँ किसी भी तरह से इस anf आग से बचने के लिए ही घटना जब मैं datagrid अंदर क्लिक किया डबल

उत्तर

10

स्क्रॉलबार एक एनडी हेडर ग्रिड का हिस्सा हैं लेकिन डबल क्लिक को संभाल नहीं करते हैं, इसलिए ईवेंट "बुलबुले" को ग्रिड तक ले जाता है।

सुरुचिपूर्ण समाधान कुछ हद तक "स्रोत क्लिक या माउस निर्देशांक के माध्यम से" क्या क्लिक किया गया "पता लगाना है।

लेकिन क्या आप भी ऐसा ही कुछ (untested) कर सकते हैं:

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

आपका बहुत-बहुत यह ठीक काम किया धन्यवाद –

1

आप देख सकते हैं है हिट सूत्री के बारे में विवरण, माउस क्लिक घटना के अंदर -

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 
} 

अधिक जानकारी: http://www.scottlogic.co.uk/blog/colin/2008/12/wpf-datagrid-detecting-clicked-cell-and-row/

0

मैं इस के साथ एक ही समस्या थी और इसका समाधान कर लिया:

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

मैं इस पढ़ा है पाने के लिए विचार: How to detect double click on list view scroll bar?

मुझे आशा है कि यह मदद करेंगे :)

संबंधित मुद्दे

 संबंधित मुद्दे