Mouse based panning for components within Gantt Chart Light Library

If you need to set up mouse based panning besides the standard scrolling behavior of the Gantt Chart components within Gantt Chart Light Library, you may adapt and use this code (Silverlight™):

GanttChartDataGrid.ApplyTemplate();
bool isPanning = false;
double originalMouseX = 0, originalMouseY = 0, originalScrollX = 0, originalScrollY = 0;
var ganttChartView = GanttChartDataGrid.GanttChartView;
var scrollViewer = ganttChartView.ScrollViewer;
GanttChartDataGrid.ChartContentElement.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
{
    var p = e.GetPosition(ganttChartView);
    originalMouseX = p.X; originalMouseY = p.Y;
    if (originalMouseX < 0)
        return;
    originalScrollX = scrollViewer.HorizontalOffset;
    originalScrollY = scrollViewer.VerticalOffset;
    CaptureMouse();
    isPanning = true;
};
MouseMove += delegate(object sender, MouseEventArgs e)
{
    if (!isPanning)
        return;
    var currentPosition = e.GetPosition(ganttChartView);
    scrollViewer.ScrollToHorizontalOffset(originalScrollX - (currentPosition.X - originalMouseX));
    scrollViewer.ScrollToVerticalOffset(originalScrollY - (currentPosition.Y - originalMouseY));
};
MouseLeftButtonUp += delegate(object sender, MouseButtonEventArgs e)
{
    isPanning = false;
    ReleaseMouseCapture();
};