5

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

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

问题是我使用的是DataGrid的MouseDoubleClick事件,所以滚动条属于DataGrid,当它们被双击时,会引发这个事件。

只有当我双击 DataGrid 的一行而不是双击滚动条的一部分时,有什么方法可以执行双击事件?

4

2 回答 2

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..
    }
}
于 2012-07-27T08:26:05.193 回答
7

是的,在 中注册活动RowStyle

<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
        <EventSetter Event="PreviewMouseDoubleClick" Handler="Row_PreviewMouseDoubleClick" />
    </Style>
</DataGrid.RowStyle>
于 2012-07-26T18:01:31.090 回答