5

WPFにDataGridがあります。行をダブルクリックすると、データベースへのクエリが実行されます。

このDataGridには水平スクロールバーと垂直スクロールバーがあり、スクロールバーの1つの矢印ボタンをすばやくクリックすると、クエリがデータベースに送信されます。

問題は、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 に答える