void OnGridPreviewMouseDown(object sender, MouseButtonEventArgs e)
 {
     if (!IsLogicBlocked)
     {
         StartSelectionInfo.Clear();
         TableViewHitInfo hitInfo = View.CalcHitInfo(e.OriginalSource as DependencyObject);
         if (!hitInfo.InRow && !hitInfo.InRowCell)
         {
             return;
         }
         StartSelectionInfo.MousePoint = e.GetPosition(DataArea);
         StartSelectionInfo.RowHandle  = hitInfo.RowHandle;
         StartSelectionInfo.Column     = hitInfo.Column;
     }
 }
 void OnGridPreviewMouseUp(object sender, MouseButtonEventArgs e)
 {
     if (!IsLogicBlocked)
     {
         if (!StartSelectionInfo.IsSelectionStarted)
         {
             return;
         }
         Mouse.Capture(null);
         ScrollController.StopHorizontalScrolling();
         ScrollController.StopVerticalScrolling();
         StartSelectionInfo.Clear();
         CurrentSelectionInfo.Clear();
         e.Handled = true;
     }
 }