なぜDataGridのMouseDoubleClickイベントiがスクロールバーの上またはヘッダースクロールバーをダブルクリックしたときにDataGrid MouseDoubleClickイベントが発生するのはなぜですか?
をダブルクリックしたときにあなたがチェックすることができます私はデータグリッド
なぜDataGridのMouseDoubleClickイベントiがスクロールバーの上またはヘッダースクロールバーをダブルクリックしたときにDataGrid MouseDoubleClickイベントが発生するのはなぜですか?
をダブルクリックしたときにあなたがチェックすることができます私はデータグリッド
スクロールバーA:
DependencyObject dep = (DependencyObject)e.OriginalSource;
// iteratively traverse the visual tree
while ((dep != null) &&
!(dep is DataGridCell) &&
!(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
if (dep is DataGridColumnHeader)
{
DataGridColumnHeader columnHeader = dep as DataGridColumnHeader;
// do something
}
if (dep is DataGridCell)
{
DataGridCell cell = dep as DataGridCell;
// do something
}
詳細 - マウスのクリックイベント内のヒットポイントの詳細については、ヘッダーはグリッドの一部ですが、ダブルクリックを処理しないため、イベントはグリッドまで「バブル」します。
イベントソースまたはマウス座標の平均値によって「何がクリックされたか」がわかりにくい解決策です。
しかし、あなたはまた、そのようなもの(未テスト)を行うことができます:私は取得するには、これを読んだ
DependencyObject src = VisualTreeHelper.GetParent((DependencyObject)e.OriginalSource);
if (!(src is Control) && src.GetType() != typeof(System.Windows.Controls.Primitives.Thumb))
{
//your code
}
:
<DataGrid>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="OnRowDoubleClicked"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
の内側をダブルクリックイベントのみこのANF火災を避けるためにどのような方法がある解雇されます http://www.scottlogic.co.uk/blog/colin/2008/12/wpf-datagrid-detecting-clicked-cell-and-row/
を私は同じ問題を抱えていたし、これでそれを解決してきましたアイデア:How to detect double click on list view scroll bar?
それがうまく働いたどうもありがとうございました、私はそれが:)
を助けていただければ幸いです –