我在WPF中有一个DataGrid。当我双击一行时,应该执行对数据库的查询。
此DataGrid具有水平和垂直滚动条,我注意到当我快速单击其中一个滚动条的箭头按钮时,它会将查询发送到数据库。
问题是我正在使用DataGrid的MouseDoubleClick
事件,因此滚动条属于DataGrid,当双击它们时,会引发此事件。
有没有办法只在双击DataGrid的一行时执行双击事件,而不是双击部分滚动条时?
答案 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>