我在 WPF 中有一个 DataGrid。当我双击一行时,应该执行对数据库的查询。
此 DataGrid 具有水平和垂直滚动条,我注意到当我快速单击其中一个滚动条的箭头按钮时,它会将查询发送到数据库。
问题是我使用的是DataGrid的MouseDoubleClick
事件,所以滚动条属于DataGrid,当它们被双击时,会引发这个事件。
只有当我双击 DataGrid 的一行而不是双击滚动条的一部分时,有什么方法可以执行双击事件?
我在 WPF 中有一个 DataGrid。当我双击一行时,应该执行对数据库的查询。
此 DataGrid 具有水平和垂直滚动条,我注意到当我快速单击其中一个滚动条的箭头按钮时,它会将查询发送到数据库。
问题是我使用的是DataGrid的MouseDoubleClick
事件,所以滚动条属于DataGrid,当它们被双击时,会引发这个事件。
只有当我双击 DataGrid 的一行而不是双击滚动条的一部分时,有什么方法可以执行双击事件?
在您的 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..
}
}
是的,在 中注册活动RowStyle
。
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="PreviewMouseDoubleClick" Handler="Row_PreviewMouseDoubleClick" />
</Style>
</DataGrid.RowStyle>