[WPF]DataGridをクリックしたセルの位置を調べる

csharp10C# WPF環境でDataGridをクリックした時のセル位置を求める。VisualTreeHelperを使ってDataGridCellとDataGridRowをたぐってcolumnとrowを調べる。formと違ってめんどくさい。他にも方法があるかもしんない。  
//
//  DataGrid dg  ... Clicked Control
//  Point pos    ... Position in DataGrid axis
//
HitTestResult result = VisualTreeHelper.HitTest(dg, pos);
if (result == null)
{
    return;
}
DependencyObject dep = result.VisualHit;
while (!(dep is DataGridCell || dep is DataGridRow))
{
    if (dep == null)
    {
         return null;
    }
    dep = VisualTreeHelper.GetParent(dep);
}
DataGridCell dgcell = null;
int c = -1;
if (dep is DataGridCell)
{
     dgcell = dep as DataGridCell;
     c = dgcell.Column.DisplayIndex;
}
while (!(dep is DataGridRow))
{
     if (dep == null) {
         return null
     }
     dep = VisualTreeHelper.GetParent(dep);
}
DataGridRow dgr = dep as DataGridRow;
r = dgr.GetIndex();
//
// c ...  column
// r ...  row
//