仅在单击DataGrid行时执行WPF MouseDoubleClick事件

时间:2012-07-26 16:53:24

标签: wpf datagrid double-click

我在WPF中有一个DataGrid。当我双击一行时,应该执行对数据库的查询。

此DataGrid具有水平和垂直滚动条,我注意到当我快速单击其中一个滚动条的箭头按钮时,它会将查询发送到数据库。

问题是我正在使用DataGrid的MouseDoubleClick事件,因此滚动条属于DataGrid,当双击它们时,会引发此事件。

有没有办法只在双击DataGrid的一行时执行双击事件,而不是双击部分滚动条时?

2 个答案:

答案 0 :(得分:8)

在MouseDoubleClick事件中尝试执行以下操作:

private void DataGridMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    DependencyObject src = VisualTreeHelper.GetParent((DependencyObject)e.OriginalSource);

    // Checks if the user double clicked on a row in the datagrid [ContentPresenter]
    if (src.GetType() == typeof(ContentPresenter))
    {
        // Your logic..
    }
}

答案 1 :(得分:6)

是的,请在RowStyle注册活动。

<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
        <EventSetter Event="PreviewMouseDoubleClick" Handler="Row_PreviewMouseDoubleClick" />
    </Style>
</DataGrid.RowStyle>